I like Big Butts and I can not lie
Last Updated: 17th, April, 2010 12:33 PM GMT
Note: we probably should have some portion of each section telling the reader where to find the specific command in smile, such as the "View>Tile Size>8x8 Scroll Editor" 'directions' for how to get to each particular option in SMILE, like my FAQ does. i dont see how to integrate this into the FAQ's current structure yet though
Note2: If available, add some stuff on the Special Level Editor. Oh yeah, and please, if you care, place in some of the vital or important addresses in I'm a Genius! And if you want, add the default doorlist index.
Recent FAQ Edit (put in for the last time edited only):
P.JBoy, section 3.6: added Changing the Rate for Collecting Items section.
---------------------------------------------------------------------------------------
Feel free to make any changes to this Table of Contents. It's very preliminary, not to mention it's coming from someone who doesn't know everything about SMILE.
---------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------
I. Intro to SMILE
*Ask Jathys if he wants to write this*
II. Established Hacker Recommendations
SMILE doesn't always work exactly as you may think it does or want it to. You should do extensive testing of rooms while/after you're building them using SMILE's room test feature by pressing E in the level editor where you want to appear, you'll need to set up your emulator with SMILE with the options at File - Preferences - Run Settings. When in doubt about something, always try to test it, you don't want to spend a large amount of time building a room only to find that it doesn't work because of some minor glitch that could've been avoided.
Random (or not-so-random) errors can sometimes creep up on you while editting in SMILE. Even during normal level editting and not just while making risky edits, you should be backing up every time you accomplish something you deem significant. During what can be deemed risky editting, such as room expansion, where you know errors are likely to occur, it's best to be making even more frequent backups of your work. Also keep a few backups for long term archival purposes in case you run into an error you missed a few days ago and it's such a critical error that you can't work around it. The easiest way to backup your work is just to make a copy of the ROM after you've saved your changes. SMILE also has a backup system, but it has its own quirks for you to learn. If you haven't figured out how it works, it's best to rely on manual backups, which are more simple to understand, although they take up more space.
1.1 Changing Rooms
When you open SMILE you'll be shown a picture. (Samus Aran Larry King Interview in V1.0, mesh of other stuff in V0.7, no clue what you see in earlier versions) This isn't a room so you must choose a room you want to edit.
To change rooms, all you need to do is click on the small drop-down window in the mid-upper-right of the editor. In the drop down menu will be a list of the rooms you can edit. Choose one of them and start editing.
*NOTE*: Some rooms have strange quirks in them and should not be edited. Refer to section 5.1 Strange Rooms for more details.
1.2 Tiles
This section and its subsections deals with the basic aspects of room creation, such as placing tiles, copy and paste, and slopes.
Placing tiles is easy. All you have to do is left click on any one the tiles along the bottom of the screen and then place them in the room by left clicking again in the main window. You can also click and drag to create multiples of the same tile.
If you right click on a tile in the main window, you'll copy it to the clipboard (more on that in a bit). You can now place that tile down without having to pick it up from the bottom window. If you right click and drag across multiple tiles, you'll copy all of them to the clipboard. You can then paste down multiple tiles for quick room building.
When you copy a tile, it gets sent to the clipboard. The clipboard is shown by default when you open SMILE, but to know where it is, it's the left tab under the room selection drop-down box. It's also labeled "Clipboard" :P.
Selecting multiple tiles will copy them all to the clipboard. From there you can paste them wherever you need them. However, if you only want to paste some of the multiple tiles selected, click on the individual tiles on the clipboard. The tiles will turn a burgundy color. When the tile is burgundy, it will not be pasted with the rest of the tiles.
Lastly, by checking the Horizontal/Vertical Flip boxes, you'll flip the contents of the clipboard horizontally/vertically.
The tile properties are the basic attribute of the block. There are 16 types, and you can choose which one you want from the scroll bar just under the clipboard. Once you select the tile property, it's applied to the first block in the clipboard.
Most of the properties are pretty basic. "Air. X-RAY." is a normal air block and is affected by x-ray; "Slope." allows slopes to be used on the block; "Air. Fool X-RAY." is just like normal air except it's unaffected by x-ray; "Treadmill." is a block that slows or speeds up Samus based on its BTS; "Shootable Air." is a block that you can pass through just like air, but when you shoot it, it crumbles; "Horizontal." is a block that copies everything from the tile to the left of it except the graphics; "Air???" is just unknown; "Bombable Air." is like shootable air except it crumbles when you bomb it rather than shoot it; "Solid Block." is a normal solid block, nothing special about it; "Door." is what you move into and the game transitions the room; "Spike Block." are blocks that hurt you when you touch them; "Crumble Block." is a block that crumbles when Samus comes into contact with it; "Shot Block." is just like shootable air expept solid, when you shoot it, it crumbles; "Vertical." is like horizontal, it copies everything from the tile above it except the graphics; "Grapple Block." is a block that Samus can grapple onto using the grappling hook; finally "Bomb Block." is like shot block, except it crumbles when you bomb it rather than shoot it.
BTS is a special block attribute that when used can create all kinds of effects. This determines how a block is constructed, how it behaves when shot, how it respawns. To apply BTS attributes to a tile, drag the BTS you want to use on top of a tile.
Using BTS, you can make slopes and shotblocks (respawning or not). Slopes are mostly common-sense; drag the slope you want over to the tile. In order for a slope to work properly in-game, however, you need to also drag the green "box" tile "behind" the slope, so to speak. Slopes won't interact with flat surfaces without the green box BTS at the high end of a slope:
_
/| = Slope |_| = Box _=Ground
_ ____ _____
/||_| /|
-Right!- -Wrong-
If you find your mod has slopes that you can't run up normally, make sure there's a green box BTS behind them. That's the only complication for making slopes.
You can also use BTS to make sets of blocks that crumble in groups (2x2, 1x2, 2x1). Notice that there's a dropdown list under BTS that can be selected? Change the value of that list (default is 00) to 0A, and make sure the BTS is not vertically or horizontally flipped. Then, drag one of the BTS values in the first row onto the first tile in your group (the topleft-most tile in your 2x2, 1x2, or 2x1). The first four in the top row are for respawning blocks, and the last four in that row are for non-respawning blocks. Once you've dragged the BTS to a tile, right-click that tile and change its tile type to whatever you want (shot block, bomb block, crumble block, etc.)
You'll then need to check "horizontal flip" and "vertical flip" on the BTS properties panel. When the BTS is flipped both ways, drag the final red circle onto the tiles that are a part of the group (all tiles but the topleft-most one in your 2x2, 1x2, or 2x1 group). This should give the tile a small green circle. If this tile is directly below the topleft-most tile in the group, set its tile property to "vertical"; otherwise, set its property to "horizontal". It sounds complicated, but it's very easy to do, so experiment with it and you'll have the hang of it in no time.
Choose any room and save it. Do you see the fraction in the title of the window? That shows the room's memory.
Example: 600/5000. what you've used / how much space there
The top of the fraction shows how much space you've currently taken up in a room. The bottom half show the total amount of space for the room, or the "cap". As long as you are under the cap, you'll be fine. However, if you go over the cap and foolishly choose to ignore the automatic warnings SMILE will give you, you need to watch because the other rooms may start to get overwritten, or "eaten", by the room you're editing.
Some tiles take up more room memory than others. Slopes and BTS also contribute to the amount of memory taken up. Be careful that you don't go over the room cap by saving often and checking that fraction.
1.3 Item/Doorcap PLMs
Hover Over PLM -> Right-click -> Type
All items are classified as "PLMs" in SM. Thus, changing PLMs is the same, and you can change anything else classified as a PLM into an item and vise versa.
PLMs are basically items, gates, doorcaps, and other little weird things hanging around in Super Metroid. Rightclick on a PLM and scroll through the list of numbers to change one PLM to another. Like even the "S" Icons and "Arrow" PLMs can be changed into a Charge Beam or something. You just need a unique Index number for items and doors. If you have two items with the same index and unknown values the game will count whichever one you picked up first and remove the other one from the game. This is because the game thinks that you've picked up all items with that index. A good example of this happening is in Limit where you are presented with the choice of either taking Super Missiles or Power Bombs. The same thing can happen for the doorcaps as well.
Try to find an item in a different room you know you won't use, move it out of reach, and use its index for your new item. Door caps and items use different indexes though, so a door cap with say, index "03" can't be removed to allow you to add an item with the index "03." However, the low bits of the unknown is also used as part of the index, and so an unknown 01 and index 03 will be different from a unknown 00 index 03. Changing the unknown to 80 will make the item or door always respawn.
Some gray doorcaps have unique indexes. You'll want to keep track of these, as they only open when certain events have been activated, normally when a certain boss has been defeated. These will be noted in a later section.
In addition, setting a gray door's Unknown to 0C will make it open only when a certain number of enemies in the room are killed. This can be changed in the Enemy Editor, explained later.
Values for Doors and Shutters ~[Squishy_Ichigo]~
DOORS
Grey Doors - Set the high nibble to:
Main Boss (00 - 03)
Mini Boss, Mother Brain (04 - 07)
Torizo (08 - 0B)
Enemy Killed (0C - 0F)
Always Closed (10 - 13)
Dachoras and Etecoons Saved (Event Bit 000F is set) (18 - 1B)
(if I recall correctly, This info is in the latest version of smile.)
Open With Item - Set the Items High Nibble as 02, Doors High Nibble as 00, and Low Nibble the same (Can't be in the same room)
SHUTTERS/GATES
Change the index of the gate top.
00-Standard Normal shot gate facing left
02-^ facing right
04-Missile gate facing left
06-^ facing right
08-Super Missile gate facing left
0A-^ facing right
0C-Power Bomb gate facing left
0E-^ facing right
Also: the shaft piece needs an index of 00 and unknown of 80.
ALSO: The shutter must always be the PLM index before the Shot gate.
Never have the pieces in two different scroll areas
1.4 The 8x8 Scroll Editor
Preferences -> View -> Tile Size -> 8x8 (Scroll Editor)
This lets you edit scroll info. Blue and green both have full scroll capability, and a red block means the "camera" will not scroll within that block. (Thus you dont want to have the player move through these red blocks. They're mostly for hiding stuff.) Green and blue scrolls will react differently to floor doors/ceiling doors and green scrolls tend to show tiles all the way to the "bottom" and "top" of the room, while blue ones hide the bottom 2 lines of tiles in a room. The top 2 lines of a room will never be visible, the status bar will always cover them.
1.5 Changing Graphics sets
On the right side of SMILE there are a couple of drop-down boxes. One is labeled Graphic Set and the other two are labeled Music. To change the graphics for that room, use the drop down box to choose the graphics set you want. Keep in mind you have to change the background of the room to one that naturally draws its tiles from the new graphic set to make the room look right. You will do this by changing the values in the Pointers dialog, explained later.
1.6 Changing Music
This is easy enough to do. Right under the Graphic Set box are two drop-down boxes labeled Music. Changing the selections in these two boxes to right combinations will change the music in that room. A list of the Music Combinations can be found in the Appendix.
1.7 Map Editor
Tools -> Map Editor
This lets you edit the map of an area. It's not that different from editing rooms. While looking at the map, you can hit "E" to enter (one of) the room(s) located at the spot the mouse is pointing at, or hit "M" to move your current room's location to the mouse cursor's location. Be sure to save your map, of course.
2.1 The FX1 Dialog
Edit -> FX1
This can change whether theres water, acid, lava, etc. in the room. (You have to experiment with the "surface numbers" under it to get it to whatever level you want.) The A/B section under that has a lot of stuff on animating spike tiles, changing bg effects like the waterfall effects in Maridia, etc.
Warning: If the FX1 boxes are red, don't edit this, as it's disabled in that room, because the game doesn't have space for it.
More Indepth with FX1 ~[Squishy_Ichigo]~
Select -
RED - Use the FX1 Pointer of another room to change this rooms FX
WHITE - Fully editable
YELLOW - Two or more FX depending on Door you come through (door pointer) Find a door pointer by looking at door out of a room connected to this room
ADDING $10 bytes allows you to change the other FX properties for that room. (Only if the box is yellow!)
Example: If the pointer isn't FFFF or 0000 (ex. C000) adding $10 bytes (ex. C010) will allow changes for other FX changes. (Change it back to the original number when done (ex C000))
Layer3Type - type of FX1
Palette Blend - Color the FX1 will have
Surface Delay - How long to wait before it starts rising to Surface New
Surface Speed - Speed at which it rises
Surface New - Were it rises to
Surface Start - Beginning point
ALSO: Surface # counts in pixels from the top (Counts in Hex of course!)
1 tile = 10 pixels
1 scroll area = 16 tiles
1 scroll area = 160 pixels
Example : 0000 is at the top, and 0010 is 1 tile down, 0020 is two tiles down, 0100 is one scroll area down)
2.2 Room Properties
Edit -> Room Properties
The height and width fields will change the height and width of the room.
Warning: Changing width (expanding horizontally) will screw up the current tile configuration of the room and you'll have to redo it. Changing the height will only add a bunch of garbage below the normal room though, so you can clear that space out and use it.
Warning: When expanding rooms horizontally, you will find that it kills some of the tile formations you may need. For example, since the only way to get doors of specific numbers is to
copypaste other doors of the same number, you may screw up your room if you destroy the doors in it. Thus, what you should do is to copypaste every door in your room near each other into a small clump (but keep them fully formed and normal) so they're next to each other, then copy this and keep it in SMILE's memory while you do the expansion. Then you can expand the room horizontally and after that, copypaste the doors back in and place them back where you need them.
If the room has scroll blocks, you have to use the Scroll editor to assign the space you just added green, red, or blue blocks.
Warning: There are limits to how big you can make a room. Namely, the tile data limit for that specific room and the scroll data limit. If you try to make it too much bigger than normal, you can cause errors, so don't push it. Especially with the scroll data (through the scroll editor). If you add too many scroll blocks, you may get rooms after the one you're editting being "eaten" and thus totally destroyed, which you definitely don't want. Thus, don't expand rooms too much beyond their normal capacity unless you know what you're doing. Especially important is backing up the game before expanding rooms too much - to test how large you can safely get them. It is possible with hex-editing to design rooms without fear of size limitations. This is covered in the Advanced SMILE section.
One saving grace about the SM engine is, it interprets no scrolls on a particular block as a green scroll - so you can have rooms that have no scroll blocks through part of them and still have the room work in most cases.
2.3 State Properties
Edit -> State Properties
You can change under what conditions a room goes into another state. When you're in the second state (or third/fourth state depending on which you want to alter the conditions for), go to state properties. There will be a drop down box with many different options, such as "zebes alive," etc. Using these, you can alter what conditions will cause that state to load. If you go to that option while the default state is up though, it'll just say there are no values to alter.
2.4 Enemy Properties
Hover Over Enemy -> Right-click -> Species
Basically any enemy can be changed into any other with the right configurations. When in doubt, look for a sample enemy thats placed in the original game and works there. Then copy its data and enter that data into your own enemy in a different room. Be sure to copy every value, because although some variables have a range within which you can alter the enemy's behavior, some enemies just won't work if you leave the Graphic Unknown 00 or such. (For example, Space Pirates.)
Whenever you're altering which enemies are in specific rooms, be sure to remove enemies you won't be putting in a room from the "allowed" list and adding the enemies which you will be using to the list as well.
As you alter more enemies you'll run into specific quirks that are unique to specific enemies - like Metroids have to be in slot 001 to work and they don't always make the correct sound effects - or the fact that Covens don't seem to work outside the Wrecked Ship. The slots seem to be specifically for graphics. If you have two different enemies in slot 007 for example, the enemy earlier on the list in slot 007 will take on the pallette of the later enemy in slot 007. You can use this to your advantage to get some bizarre color combos, like purple Rios using Zoomers and many other interesting palette shifts.
PM: I guess I could help add to this section with some details about the variables. Anybody who has a clue or info to add to the blank spots and such, please contribute.
Species ID: The 4-digit ID number, and the name in the yellow box (some of these are actually misleading, by not according to their official name). If you got the Chrono Trigger Knight (usually exposed by Offscreen Enemy to 0,0), the enemy is actually there, it's just not registered in the enemy index.
HP: How much damage it can withstand (corresponds with vulnerabilities and the projectile damage)
Damage: How much energy they take from you (this is assuming you're just wearing the Power Suit only, Varia divides by 2, Gravity by 4, I think)
Width/Height:
Sound:
Death Animation: How they blow up when killed.
00-small round, 01-screw attack, 02-large round, 03-small series, 04-large series
Grapple: How they react when you shoot the Grapple Beam at them. (the following values are the last two digits, just leave the first two digits as 80. Format is grapple effect, enemy affect unless said otherwise)
05-latches, stops until released, 06-ignores, stops, 07-curves, unaffected, 0A-latches, killed, 0F-stopped, unaffected, 14-latches, unaffected, 19-latches, delay die, 1E-latches, Samus hurt and knocked off, 23-die Samus die (I guess insta-kill on Samus if she latched on), 37-enemy killed, 3C-enemy becomes untouchable
Hurt Flash:
Layer:
00-very front, 02-in front of Samus, 05-between Samus and background, 08-behind all
Palette: Simple enough for most enemies (exceptions are few, including bosses that have palette state-shifts). You can shift palettes like in the GFX Editor.
Vulnerable:
Initiation AI:
Item Drop: Affects the chances of what pickups the enemies drop.
Enemy Tiles:
Enemy Touch: What damage you get by touching that enemy.
Enemy Shot: Same thing, only from projectile shots.
8023-Normal harm, 804C-no effect, A953-Mocktroid, EDEB-Metroid, 802D-normal shot hit to enemy, DC1C-shot reflected
PB Reaction: What they do after getting hit by a Power Bomb.
2.5 Room Expansion
Edit -> Room Properties
See 3.5 and 2.2.
2.6 Moving Rooms
Tools -> Map Editor
2.7 Pointers
Edit -> Pointers
Level Data-The pointer to the location where the room's data (tiles) is stored. Note that the bank can be changed; this means you can point anywhere in the file.
FX1 (Bank 83, 18000-1FFFF)- The effects for graphics and liquids in a room.
Enemy Population (Bank A1, 108000-108FFFF)-The information for what enemies belong in a room.
Enemy Set (Bank B4, 1A0000-1A7FFF)-Information for physical placement and type of enemies in the room. This is different from population.
Scroll (Bank 8F, 78000-7FFFF)- The scroll pointers for a room. Since you can use the scroll editor, you probably shouldn't change this unless you know what you're doing.
0000 = All screens with blue scroll blocks
0001 = All screens with green scroll blocks
Unknown1/RoomVar-For Jathy's RoomVar editor. No information about this system is currently available. Best to leave it alone.
Note: RoomVar (State) only works in 1.23.
FX2 (Bank 8F, 78000-7FFFF)- You almost never needed to change this, most rooms just use 0000; it factors into the landing site areas in Crateria and a few other rooms. This is also used for the "exploding Zebes/Ceres" effect in the escape sequence.
PLM (Bank 8F, 78000-7FFFF) - Determines what PLMs are in a room.
BG_Data (Bank 8F, 78000-7FFFF)- changing this will change the background configuration. Go find a room you like the background of, check out its number, for example, B920 or whatever, and you can go to a different room, enter it as that rooms BG_Data and use it in that room. If the BG_Data of a room is 0000, then the Layer2 bg is being used instead of the BG_Data pointer.
Layer1_2 (Bank 8F, 78000-7FFFF)- Affects segments of the backgrounds in specific rooms but it seems to be a major focus in parts of the backgrounds of Maridian rooms and the "landing site" areas in Crateria.
Door Out (Bank 8F, 78000-7FFFF)-Points towards info on how many doors are in a room and where they lead.
2.8 The Graphics Editor
Tools -> Graphics Editor
The Graphics Editor is a powerful and handy tool. It can be used to add in entirely new tilesets or completely retool old ones.
Palette Editor-Used to change the colors used by tilesets. Each tileset has eight palettes. The first color in every palette is actually the "transparent" color; no matter what color you set this to, it will always be invisible in-game. The first two palettes are used in CREs and by PLMs and shouldn't be edited recklessly; the first three usable colors (the ones that come after the invisible color) in the third and fourth palettes are also used by PLMs.
The palette, for no apparent reason, is limited to 218 bytes in Super Metroid by default. Going over this limit will likely corrupt tilesets after it, so don't do it! If you want a bigger palette, you can instead change the pointers for it via hex-editing. This process is explained in the Advanced guide.
You can also save a palette for editing outside of SMILE with the "Save TO" option, or load an edited palette into the graphics editor with the Load FROM" option. Size limits still apply when loading in new palettes, though.
Tile Table Editor-This is used to edit the tile table of a tileset (the tiles in the bottom window of SMILE). At the top of this window is a set of four 8x8 boxes; these four boxes compose one tile. On the right is displayed the 8x8 tiles that can be used; drag one of these onto the 8x8 box in the tile to replace it. Each individual box has can be flipped horizontally and/or vertically and can use a different palette set. Clicking on a box makes it "background" which means that Samus/sprites will always be drawn in front of it instead of behind it; a background box will be displayed with a small red box in its middle corner. Be sure to click "Save to ROM" when done editing each individual tile, or changes will be lost.
IMPORTANT! Adding new tiles to UNUSED (little white x's) portions of the table can completely corrupt later tilesets! Be sure to back up before taking that chance!
Tile Editing (Export)-If you want to draw entirely new tiles for a tileset, you need to export and edit its graphics file (GFX). There's a couple applications that can edit these files; I recommend Tile Layer Pro (TLP). You can make CREs (information used across all tilesets, like door appearances, missle pickups, save stations, etc.) or individual tilesets into graphics files. These files can then be opened in TLP and edited. When you've created new graphics and are ready to import them back, use the appropriate "Save to ROM" option to import the edited GFX file back in.
Special GFX-For editing intro screens or the title screen.
PM's Note regarding Mode 7: Most tile editors are incapable of doing this format (even Tile Layer Pro). One that's capable I'm aware of at the moment is in WindHex32. Since SMILE can't read this format in levels conventionally (those Ceres rooms that are mentioned in 5.1, though they don't matter much), it's best to leave it alone.
And another thing: If you're asked to limit the palette (such as the Escape State in Ceres), use a backup first. Casually, the palette range is 211-218.
2.9 Samus Aran Beauty Salon
Tools -> Beauty Salon
The Beauty Salon allows you to edit Samus' suit palettes and a bit more.
Samus Palettes:
Suit-Select the suit you want to edit.
Condition-The suit palette changes depending on various factors. The colors for screw attack or the suit's warm glow in heated areas are affected here. When changing the suit colors, be sure to change all conditions, so that the suit doesn't change colors all the time.
Samus Picture-Displays the new colors.
Palette Options-You can change individual colors on the palettes on the top-middle portion of the screen by clicking on them and editing the three color bars at the bottom-left. Please don't give Samus a neon green/yellow/pink armor. Be gentle on the eyes of your hack's players.
Other Options-You can use the displayed options to more easily edit the varying palettes used under certain conditions. The bottom-right color bar affects what color is pulsed or washed into when using the Heat Glow or Wash Out Colors options.
After editing each condition, be sure to use the "Save to ROM" button to save changes done.
Shifting the bar under the Samus Picture to the right allows you to edit a few other features, like the palette for the title or intro screens. The offset of the "I'm a genius!" option can be changed to the offset of any palette in the game and the amount of colors located at that address. Obviously you shouldn't mess with this if you aren't a genius.
2.10 Text Editor
Tools -> Text Editor
Self-explanitory, really. This can be used to edit the text in the intro, the text that appears at the beginning of escape sequences, or the names of areas on the map.
2.11 Game Behavior Dialog
These are almost all self-explanitory functions. All values here are stored in hex (except for escape timers), so if you set a Big Energy pickup's energy value to "10" you'll actually get 17 energy from it.
Edit -> Special -> Game Behavior
2.12 Layer 2
Edit -> Special -> Layer 2 -> Add|Remove
Layer2 can be used for backgrounds. Note that adding a second layer is almost definitely going to take up extra tile space in the room, and making complex backgrounds will take up even more room. Keep in mind the limits of your room's size when doing this!
2.13 Door Editing
Hover over door tiles -> Shift+Right-click -> Various Door Options
Shift+Rightclick on the back of "Door A" and select clone door, then enter a name. Then go find whatever door you want to link it to, for example "Door B", clone that door, then go back to Door A and shift+rightclick it again and select "Edit door." Select whatever you named the clone of Door B and then click 'transfer properties' and 'remember'. Then go to Door B and repeat that process only give it Door A's information.
Important: If your door is going to transverse areas, like from Crateria to Brinstar, you need to manually set the "bitflag" to 40. If you don't do this, the map will get screwed up. Leave the mouse over the second "field" in the door editor and you'll see that field is the bitflag. It's usually 00.
Important: Doors are tied to a specific door # in the door editor. If you delete a door with a harder to find #, you may run into problems. Don't delete doors carelessly.
To make any tile a door, or change the door # ~[Squishy_Ichigo]~
Double click on the desired tile in the bottom left window of SMILE to bring up the "Make Defaults" window. This window allows you to change the defualt property and BTS value of the tile. For doors, your going to want the "Propery Byte" to be set "Door" and the "BTS" to be set to the number you want the door to be. You could also use the scroll down "act as" bar for the tile your currently holding.
You don't have to worry about the color of doors - as the portion of the door that gives it its color is merely a door cap - a PLM that can be easily dragged and placed on different doors to your liking, as long as the room has PLMs in it.
Some rooms will not accept ceiling or floor doors. These are typically rooms with no scroll blocks. There is also a difference between green and blue scroll blocks with regard to how they interact with ceiling or floor doors. If you're getting an error while going through one, try changing the scroll near it from green or blue or visa versa. Floordoors seem to have an affinity for blue scroll areas and ceilingdoors have an affinity for green. However, this is not always the case, in some rooms its reversed or they won't work at all. Don't plan out door positions without testing to see if they work with regards to ceiling or floor doors, as they are more finicky than left/right doors.
Also, while elevators work similar to door transitions, it's not recommended that you try to edit them in SMILE yet, unless you really know what you're doing.
Please note that I do not know everything about elevators, namely their bitflags and what they do. I just copy bitflag settings from pre-existing elevator doors and it's worked thus far.
SMILE's file:
D73F (it's an elevator*)
[Special] = 2C00
[Speed] = 0000/0001 for down/up
[Speed 2] = Y position to make the elevator first appear when entering the room on an elevator. 0018 is a common value for elevators going down into a room. 0Z40 works quite well for elevators going up into a room, where Z is the screen just below where you emerge from.
*Do not include this in the Enemy Allowed list or it will crash your room.
**Door tiles with a RoomID of 0000 must be directly underneath the elevator, or you won't be able to stand on and use it.
***Elevators need 2 door in their path to function correctly. More information on this is included with the door editor.
The first thing you need to know about elevators is how to set up their doors. It's not difficult. Underneath the elevator enemy, you need door tiles with code that has no room ID. You really only need the first 3 boxes in the door editor. Just use the bitflags from another elevator door and I don't think the direction really matters for this one. This is a sample door that's working in my hack.
0000 F8 03 00 00 00 00 0000 0000
For the door tiles that cause the room transition while on an elevator, it's the same thing, only with a room ID involved. Another example:
B236 A0 02 00 00 00 00 0000 0000
Now that you know all you should need to know to create doors for custom elevators, the more tricky parts come into play.
Quote from: SMILE files
[Speed 2] = Y position to make the elevator first appear when entering the room on an elevator. 0018 is a common value for elevators going down into a room. 0Z40 works quite well for elevators going up into a room, where Z is the screen just below where you emerge from.
About this, you can get some interesting graphics errors if you make the elevator appear outside the range of the room itself, but please refrain from doing so, it may cause other more serious errors. The one time I tried ended up with the room being corrupted somehow, since then I've just followed SMILE's instructions here and its worked out well.
How to set up an elevator to pass through multiple rooms. The checklist of needed materials:
1. An elevator enemy in every room
2. 2 rooms for each room in-between the top and bottom rooms of the shaft.
There is a reason all elevators in Super Metroid only have one door transition on their way. The direction you set an elevator to go when you ride it also sets the direction the elevator moves when you enter the room on an elevator. An elevator that heads up will only head down when you emerge into the room on an elevator, and vice versa. The direction of the door you go does not affect which direction the elevator heads.
So, what can you do? Notice I mention 2 rooms for each room in-between the top and bottom. When you ride down, you will head through one half of those rooms, each with the elevator enemy in them set to up. Then, when you ride the elevator back up, the door up will point to the other half, which will have the elevator enemy set to down. A simple rule is every room you go through should have an elevator the opposite direction of the first room.
In case you didn't quite get that, here's a visual example.
Rooms: 00(D) , 01(D), 02(U), and 03(U). (D and U mean the elevator enemy in them is set to down or up, respectively)
The setup for going down from the top is this order:
00(D)
02(U)
03(U)
For going back up, you want to go through:
00(D)
01(D)
03(U)
One last note. When riding down on an elevator, they tend to be whiny about going all the way down to go through a door that is on the bottom of the room. If you ever encounter problems with elevators stopping short of the door, put the door one screen up from the bottom and make the bottom screen a red scroll. That usually fixes the problem.
2.14 Save Stations
Edit -> Area Load Stations
Region : The area its in (Ex. Crateria, Brinstar, etc)
Index : (using SMILE 1.32) The same number as the [low] on the save station PLM
RoomID: the room its in
Door Data: value for a door that connects to that room, just press "L" over a door in another room that connects to RoomID.
Unknown: Usually 0000, sometimes 0001?
Scroll X: Horizontal Scroll - Counts "scroll areas" for example, 0000 is the top left 0100 the next one to the right, and so on!
Scroll Y: Same as Scroll X, just with vertical. EX. 0000 is the top left, and 0100 is the next one down!
Samus Y: Vertical count on pixels 0000 is the top, and inceasing the number goes down
Samus X: Horizontal count on pixels 0000 is the middle?, increasing the number goes right
Save:
Done:
Note: we probably should have some portion of each section telling the reader where to find the specific command in smile, such as the "View>Tile Size>8x8 Scroll Editor" 'directions' for how to get to each particular option in SMILE, like my FAQ does. i dont see how to integrate this into the FAQ's current structure yet though
Note2: If available, add some stuff on the Special Level Editor. Oh yeah, and please, if you care, place in some of the vital or important addresses in I'm a Genius! And if you want, add the default doorlist index.
Recent FAQ Edit (put in for the last time edited only):
P.JBoy, section 3.6: added Changing the Rate for Collecting Items section.
Code:
_________ / _____/__ ________ ___________ \_____ \| | \____ \_/ __ \_ __ \ / \ | / |_> > ___/| | \/ /_______ /____/| __/ \___ >__| \/ |__| \/ _____ __ .__ .___ / \ _____/ |________ ____ |__| __| _/ / \ / \_/ __ \ __\_ __ \/ _ \| |/ __ | / Y \ ___/| | | | \( <_> ) / /_/ | \____|__ /\___ >__| |__| \____/|__\____ | \/ \/ \/ .___ __ __ .___ | | _____/ |_ ____ ________________ _/ |_ ____ __| _/ | |/ \ __\/ __ \ / ___\_ __ \__ \\ __\/ __ \ / __ | | | | \ | \ ___// /_/ > | \// __ \| | \ ___// /_/ | |___|___| /__| \___ >___ /|__| (____ /__| \___ >____ | \/ \/_____/ \/ \/ \/ .____ .__ | | _______ __ ____ | | | | _/ __ \ \/ // __ \| | | |__\ ___/\ /\ ___/| |__ |_______ \___ >\_/ \___ >____/ \/ \/ \/ ___________ .___.__ __ \_ _____/ __| _/|__|/ |_ ___________ | __)_ / __ | | \ __\/ _ \_ __ \ | \/ /_/ | | || | ( <_> ) | \/ /_______ /\____ | |__||__| \____/|__| \/ \/
---------------------------------------------------------------------------------------
Feel free to make any changes to this Table of Contents. It's very preliminary, not to mention it's coming from someone who doesn't know everything about SMILE.
---------------------------------------------------------------------------------------
Code:
/--------------------------------------------------------\ | __________ ___. .__ _____ | ||__ ___/____ \_ |__ | | ____ _____/ ____\ | | | | \__ \ | __ \| | _/ __ \ / _ \ __\ | | | | / __ \| \_\ \ |_\ ___/ ( <_> ) | | | |____| (____ /___ /____/\___ > \____/|__| | | \/ \/ \/ | |_________ __ __ | |\_ ___ \ ____ _____/ |_ ____ _____/ |_ ______| |/ \ \/ / _ \ / \ __\/ __ \ / \ __\/ ___/| |\ \___( <_> ) | \ | \ ___/| | \ | \___ \ | | \______ /\____/|___| /__| \___ >___| /__| /____ >| | \/ \/ \/ \/ \/ | \--------------------------------------------------------/
I. Intro to SMILE (?)
II. Established Hacker Recommendations
|
|-II.1 Testing [X]
|-II.2 Backup Warning [X]
...
III. SMILE Editing
|
1. Beginning SMILE
|
|-1.1 Changing Rooms [X]
|-1.2 Tiles [X]
|---1.2a Placing Tiles [X]
|---1.2b The Clipboard [X]
|---1.2c Tile Properties [X]
|---1.2d Slopes and Basic BTS [X]
|---1.2e Room Memory Limitations [X]
|-1.3 Item/Door PLMS [X]
|-1.4 The 8x8 Scroll Editor [X]
|-1.5 Changing Graphics Sets [X]
|-1.6 Changing Music [X]
|-1.7 Map Editor [X]
...
2. Intermediate SMILE
|
|-2.1 The FX1 Dialog [X]
|-2.2 Room Properties [X]
|-2.3 State Properties [X]
|-2.4 Enemy Properties
|-2.5 Room Expansion
|-2.6 Moving Rooms [X]
|-2.7 Pointers [X]
|-2.8 The Graphics Editor [X]
|-2.9 Samus Aran Beauty Salon (SABS) [X]
|-2.10 Text Editor [X]
|-2.11 Game Behavior Dialog
|-2.12 Layer 2 [X]
|-2.13 Door Editing [X]
|---2.13a Doors [X]
|---2.13b Elevators [X]
|-2.14 Save Stations
...
3. Advanced SMILE
|
|-3.1 Adding New Doors [X]
|-3.2 Making New Rooms [X]
|-3.3 Changing Game Physics (Is this an advanced technique or more intermediate?)
|-3.4 Scrolling PLMs
|-3.5 Increasing Room Size Limits [X]
|-3.6 Change the Rate for Collecting Items
...
4. Other SMILE Functions
|
|-4.1 Level to Bitmap
|-4.2 Backup and Recovery System
|-4.3 Headers
|-4.4 ROM Expansion
|-4.5 IPS Patch Creation/Application [X]
|-4.6 File Compare [X]
...
5. Random SM Quirks
|
|-5.1 Strange Rooms [X]
|-5.2 Scrolling Sky Error [X] <- Updated with a bit more info!
...
6. SMILE Version History (what's new.rtf) [X]
IV. Appendix
|
|-A.1 Music Combinations (Copy from mdbformat.txt)
|-A.2 FX1 Palette Blend List [X]
...
Bonus: Crys is dah name's guide to designing levels!
II. Established Hacker Recommendations
|
|-II.1 Testing [X]
|-II.2 Backup Warning [X]
...
III. SMILE Editing
|
1. Beginning SMILE
|
|-1.1 Changing Rooms [X]
|-1.2 Tiles [X]
|---1.2a Placing Tiles [X]
|---1.2b The Clipboard [X]
|---1.2c Tile Properties [X]
|---1.2d Slopes and Basic BTS [X]
|---1.2e Room Memory Limitations [X]
|-1.3 Item/Door PLMS [X]
|-1.4 The 8x8 Scroll Editor [X]
|-1.5 Changing Graphics Sets [X]
|-1.6 Changing Music [X]
|-1.7 Map Editor [X]
...
2. Intermediate SMILE
|
|-2.1 The FX1 Dialog [X]
|-2.2 Room Properties [X]
|-2.3 State Properties [X]
|-2.4 Enemy Properties
|-2.5 Room Expansion
|-2.6 Moving Rooms [X]
|-2.7 Pointers [X]
|-2.8 The Graphics Editor [X]
|-2.9 Samus Aran Beauty Salon (SABS) [X]
|-2.10 Text Editor [X]
|-2.11 Game Behavior Dialog
|-2.12 Layer 2 [X]
|-2.13 Door Editing [X]
|---2.13a Doors [X]
|---2.13b Elevators [X]
|-2.14 Save Stations
...
3. Advanced SMILE
|
|-3.1 Adding New Doors [X]
|-3.2 Making New Rooms [X]
|-3.3 Changing Game Physics (Is this an advanced technique or more intermediate?)
|-3.4 Scrolling PLMs
|-3.5 Increasing Room Size Limits [X]
|-3.6 Change the Rate for Collecting Items
...
4. Other SMILE Functions
|
|-4.1 Level to Bitmap
|-4.2 Backup and Recovery System
|-4.3 Headers
|-4.4 ROM Expansion
|-4.5 IPS Patch Creation/Application [X]
|-4.6 File Compare [X]
...
5. Random SM Quirks
|
|-5.1 Strange Rooms [X]
|-5.2 Scrolling Sky Error [X] <- Updated with a bit more info!
...
6. SMILE Version History (what's new.rtf) [X]
IV. Appendix
|
|-A.1 Music Combinations (Copy from mdbformat.txt)
|-A.2 FX1 Palette Blend List [X]
...
Bonus: Crys is dah name's guide to designing levels!
---------------------------------------------------------------------------------------
I. Intro to SMILE
*Ask Jathys if he wants to write this*
II. Established Hacker Recommendations
SMILE doesn't always work exactly as you may think it does or want it to. You should do extensive testing of rooms while/after you're building them using SMILE's room test feature by pressing E in the level editor where you want to appear, you'll need to set up your emulator with SMILE with the options at File - Preferences - Run Settings. When in doubt about something, always try to test it, you don't want to spend a large amount of time building a room only to find that it doesn't work because of some minor glitch that could've been avoided.
Random (or not-so-random) errors can sometimes creep up on you while editting in SMILE. Even during normal level editting and not just while making risky edits, you should be backing up every time you accomplish something you deem significant. During what can be deemed risky editting, such as room expansion, where you know errors are likely to occur, it's best to be making even more frequent backups of your work. Also keep a few backups for long term archival purposes in case you run into an error you missed a few days ago and it's such a critical error that you can't work around it. The easiest way to backup your work is just to make a copy of the ROM after you've saved your changes. SMILE also has a backup system, but it has its own quirks for you to learn. If you haven't figured out how it works, it's best to rely on manual backups, which are more simple to understand, although they take up more space.
Code:
/------------------------------------------------------------\ |__________ .__ .__ | |\______ \ ____ ____ |__| ____ ____ |__| ____ ____ | | | | _// __ \ / ___\| |/ \ / \| |/ \ / ___\ | | | | \ ___// /_/ > | | \ | \ | | \/ /_/ >| | |______ /\___ >___ /|__|___| /___| /__|___| /\___ / | | \/ \/_____/ \/ \/ \//_____/ | | | | _________ _____ .___.____ ___________ | | / _____/ / \ | | | \_ _____/ | | \_____ \ / \ / \| | | | __)_ | | / \/ Y \ | |___ | \ | |/_______ /\____|__ /___|_______ \/_______ / | | \/ \/ \/ \/ | \------------------------------------------------------------/
1.1 Changing Rooms
When you open SMILE you'll be shown a picture. (Samus Aran Larry King Interview in V1.0, mesh of other stuff in V0.7, no clue what you see in earlier versions) This isn't a room so you must choose a room you want to edit.
To change rooms, all you need to do is click on the small drop-down window in the mid-upper-right of the editor. In the drop down menu will be a list of the rooms you can edit. Choose one of them and start editing.
*NOTE*: Some rooms have strange quirks in them and should not be edited. Refer to section 5.1 Strange Rooms for more details.
1.2 Tiles
This section and its subsections deals with the basic aspects of room creation, such as placing tiles, copy and paste, and slopes.
Placing tiles is easy. All you have to do is left click on any one the tiles along the bottom of the screen and then place them in the room by left clicking again in the main window. You can also click and drag to create multiples of the same tile.
If you right click on a tile in the main window, you'll copy it to the clipboard (more on that in a bit). You can now place that tile down without having to pick it up from the bottom window. If you right click and drag across multiple tiles, you'll copy all of them to the clipboard. You can then paste down multiple tiles for quick room building.
When you copy a tile, it gets sent to the clipboard. The clipboard is shown by default when you open SMILE, but to know where it is, it's the left tab under the room selection drop-down box. It's also labeled "Clipboard" :P.
Selecting multiple tiles will copy them all to the clipboard. From there you can paste them wherever you need them. However, if you only want to paste some of the multiple tiles selected, click on the individual tiles on the clipboard. The tiles will turn a burgundy color. When the tile is burgundy, it will not be pasted with the rest of the tiles.
Lastly, by checking the Horizontal/Vertical Flip boxes, you'll flip the contents of the clipboard horizontally/vertically.
The tile properties are the basic attribute of the block. There are 16 types, and you can choose which one you want from the scroll bar just under the clipboard. Once you select the tile property, it's applied to the first block in the clipboard.
Most of the properties are pretty basic. "Air. X-RAY." is a normal air block and is affected by x-ray; "Slope." allows slopes to be used on the block; "Air. Fool X-RAY." is just like normal air except it's unaffected by x-ray; "Treadmill." is a block that slows or speeds up Samus based on its BTS; "Shootable Air." is a block that you can pass through just like air, but when you shoot it, it crumbles; "Horizontal." is a block that copies everything from the tile to the left of it except the graphics; "Air???" is just unknown; "Bombable Air." is like shootable air except it crumbles when you bomb it rather than shoot it; "Solid Block." is a normal solid block, nothing special about it; "Door." is what you move into and the game transitions the room; "Spike Block." are blocks that hurt you when you touch them; "Crumble Block." is a block that crumbles when Samus comes into contact with it; "Shot Block." is just like shootable air expept solid, when you shoot it, it crumbles; "Vertical." is like horizontal, it copies everything from the tile above it except the graphics; "Grapple Block." is a block that Samus can grapple onto using the grappling hook; finally "Bomb Block." is like shot block, except it crumbles when you bomb it rather than shoot it.
BTS is a special block attribute that when used can create all kinds of effects. This determines how a block is constructed, how it behaves when shot, how it respawns. To apply BTS attributes to a tile, drag the BTS you want to use on top of a tile.
Using BTS, you can make slopes and shotblocks (respawning or not). Slopes are mostly common-sense; drag the slope you want over to the tile. In order for a slope to work properly in-game, however, you need to also drag the green "box" tile "behind" the slope, so to speak. Slopes won't interact with flat surfaces without the green box BTS at the high end of a slope:
_
/| = Slope |_| = Box _=Ground
_ ____ _____
/||_| /|
-Right!- -Wrong-
If you find your mod has slopes that you can't run up normally, make sure there's a green box BTS behind them. That's the only complication for making slopes.
You can also use BTS to make sets of blocks that crumble in groups (2x2, 1x2, 2x1). Notice that there's a dropdown list under BTS that can be selected? Change the value of that list (default is 00) to 0A, and make sure the BTS is not vertically or horizontally flipped. Then, drag one of the BTS values in the first row onto the first tile in your group (the topleft-most tile in your 2x2, 1x2, or 2x1). The first four in the top row are for respawning blocks, and the last four in that row are for non-respawning blocks. Once you've dragged the BTS to a tile, right-click that tile and change its tile type to whatever you want (shot block, bomb block, crumble block, etc.)
You'll then need to check "horizontal flip" and "vertical flip" on the BTS properties panel. When the BTS is flipped both ways, drag the final red circle onto the tiles that are a part of the group (all tiles but the topleft-most one in your 2x2, 1x2, or 2x1 group). This should give the tile a small green circle. If this tile is directly below the topleft-most tile in the group, set its tile property to "vertical"; otherwise, set its property to "horizontal". It sounds complicated, but it's very easy to do, so experiment with it and you'll have the hang of it in no time.
Choose any room and save it. Do you see the fraction in the title of the window? That shows the room's memory.
Example: 600/5000. what you've used / how much space there
The top of the fraction shows how much space you've currently taken up in a room. The bottom half show the total amount of space for the room, or the "cap". As long as you are under the cap, you'll be fine. However, if you go over the cap and foolishly choose to ignore the automatic warnings SMILE will give you, you need to watch because the other rooms may start to get overwritten, or "eaten", by the room you're editing.
Some tiles take up more room memory than others. Slopes and BTS also contribute to the amount of memory taken up. Be careful that you don't go over the room cap by saving often and checking that fraction.
1.3 Item/Doorcap PLMs
Hover Over PLM -> Right-click -> Type
All items are classified as "PLMs" in SM. Thus, changing PLMs is the same, and you can change anything else classified as a PLM into an item and vise versa.
PLMs are basically items, gates, doorcaps, and other little weird things hanging around in Super Metroid. Rightclick on a PLM and scroll through the list of numbers to change one PLM to another. Like even the "S" Icons and "Arrow" PLMs can be changed into a Charge Beam or something. You just need a unique Index number for items and doors. If you have two items with the same index and unknown values the game will count whichever one you picked up first and remove the other one from the game. This is because the game thinks that you've picked up all items with that index. A good example of this happening is in Limit where you are presented with the choice of either taking Super Missiles or Power Bombs. The same thing can happen for the doorcaps as well.
Try to find an item in a different room you know you won't use, move it out of reach, and use its index for your new item. Door caps and items use different indexes though, so a door cap with say, index "03" can't be removed to allow you to add an item with the index "03." However, the low bits of the unknown is also used as part of the index, and so an unknown 01 and index 03 will be different from a unknown 00 index 03. Changing the unknown to 80 will make the item or door always respawn.
Some gray doorcaps have unique indexes. You'll want to keep track of these, as they only open when certain events have been activated, normally when a certain boss has been defeated. These will be noted in a later section.
In addition, setting a gray door's Unknown to 0C will make it open only when a certain number of enemies in the room are killed. This can be changed in the Enemy Editor, explained later.
Values for Doors and Shutters ~[Squishy_Ichigo]~
DOORS
Grey Doors - Set the high nibble to:
Main Boss (00 - 03)
Mini Boss, Mother Brain (04 - 07)
Torizo (08 - 0B)
Enemy Killed (0C - 0F)
Always Closed (10 - 13)
Dachoras and Etecoons Saved (Event Bit 000F is set) (18 - 1B)
(if I recall correctly, This info is in the latest version of smile.)
Open With Item - Set the Items High Nibble as 02, Doors High Nibble as 00, and Low Nibble the same (Can't be in the same room)
SHUTTERS/GATES
Change the index of the gate top.
00-Standard Normal shot gate facing left
02-^ facing right
04-Missile gate facing left
06-^ facing right
08-Super Missile gate facing left
0A-^ facing right
0C-Power Bomb gate facing left
0E-^ facing right
Also: the shaft piece needs an index of 00 and unknown of 80.
ALSO: The shutter must always be the PLM index before the Shot gate.
Never have the pieces in two different scroll areas
1.4 The 8x8 Scroll Editor
Preferences -> View -> Tile Size -> 8x8 (Scroll Editor)
This lets you edit scroll info. Blue and green both have full scroll capability, and a red block means the "camera" will not scroll within that block. (Thus you dont want to have the player move through these red blocks. They're mostly for hiding stuff.) Green and blue scrolls will react differently to floor doors/ceiling doors and green scrolls tend to show tiles all the way to the "bottom" and "top" of the room, while blue ones hide the bottom 2 lines of tiles in a room. The top 2 lines of a room will never be visible, the status bar will always cover them.
1.5 Changing Graphics sets
On the right side of SMILE there are a couple of drop-down boxes. One is labeled Graphic Set and the other two are labeled Music. To change the graphics for that room, use the drop down box to choose the graphics set you want. Keep in mind you have to change the background of the room to one that naturally draws its tiles from the new graphic set to make the room look right. You will do this by changing the values in the Pointers dialog, explained later.
1.6 Changing Music
This is easy enough to do. Right under the Graphic Set box are two drop-down boxes labeled Music. Changing the selections in these two boxes to right combinations will change the music in that room. A list of the Music Combinations can be found in the Appendix.
1.7 Map Editor
Tools -> Map Editor
This lets you edit the map of an area. It's not that different from editing rooms. While looking at the map, you can hit "E" to enter (one of) the room(s) located at the spot the mouse is pointing at, or hit "M" to move your current room's location to the mouse cursor's location. Be sure to save your map, of course.
Code:
/---------------------------------------------------------------------------\ |.___ __ .___.__ __ | || | _____/ |_ ___________ _____ ____ __| _/|__|____ _/ |_ ____ | || |/ \ __\/ __ \_ __ \/ \_/ __ \ / __ | | \__ \\ __\/ __ \ | || | | \ | \ ___/| | \/ Y Y \ ___// /_/ | | |/ __ \| | \ ___/ | ||___|___| /__| \___ >__| |__|_| /\___ >____ | |__(____ /__| \___ >| | \/ \/ \/ \/ \/ \/ \/ | | _________ _____ .___.____ ___________ | | / _____/ / \ | | | \_ _____/ | | \_____ \ / \ / \| | | | __)_ | | / \/ Y \ | |___ | \ | |/_______ /\____|__ /___|_______ \/_______ / | | \/ \/ \/ \/ | \---------------------------------------------------------------------------/
2.1 The FX1 Dialog
Edit -> FX1
This can change whether theres water, acid, lava, etc. in the room. (You have to experiment with the "surface numbers" under it to get it to whatever level you want.) The A/B section under that has a lot of stuff on animating spike tiles, changing bg effects like the waterfall effects in Maridia, etc.
Warning: If the FX1 boxes are red, don't edit this, as it's disabled in that room, because the game doesn't have space for it.
More Indepth with FX1 ~[Squishy_Ichigo]~
Select -
RED - Use the FX1 Pointer of another room to change this rooms FX
WHITE - Fully editable
YELLOW - Two or more FX depending on Door you come through (door pointer) Find a door pointer by looking at door out of a room connected to this room
ADDING $10 bytes allows you to change the other FX properties for that room. (Only if the box is yellow!)
Example: If the pointer isn't FFFF or 0000 (ex. C000) adding $10 bytes (ex. C010) will allow changes for other FX changes. (Change it back to the original number when done (ex C000))
Layer3Type - type of FX1
Palette Blend - Color the FX1 will have
Surface Delay - How long to wait before it starts rising to Surface New
Surface Speed - Speed at which it rises
Surface New - Were it rises to
Surface Start - Beginning point
ALSO: Surface # counts in pixels from the top (Counts in Hex of course!)
1 tile = 10 pixels
1 scroll area = 16 tiles
1 scroll area = 160 pixels
Example : 0000 is at the top, and 0010 is 1 tile down, 0020 is two tiles down, 0100 is one scroll area down)
2.2 Room Properties
Edit -> Room Properties
The height and width fields will change the height and width of the room.
Warning: Changing width (expanding horizontally) will screw up the current tile configuration of the room and you'll have to redo it. Changing the height will only add a bunch of garbage below the normal room though, so you can clear that space out and use it.
Warning: When expanding rooms horizontally, you will find that it kills some of the tile formations you may need. For example, since the only way to get doors of specific numbers is to
copypaste other doors of the same number, you may screw up your room if you destroy the doors in it. Thus, what you should do is to copypaste every door in your room near each other into a small clump (but keep them fully formed and normal) so they're next to each other, then copy this and keep it in SMILE's memory while you do the expansion. Then you can expand the room horizontally and after that, copypaste the doors back in and place them back where you need them.
If the room has scroll blocks, you have to use the Scroll editor to assign the space you just added green, red, or blue blocks.
Warning: There are limits to how big you can make a room. Namely, the tile data limit for that specific room and the scroll data limit. If you try to make it too much bigger than normal, you can cause errors, so don't push it. Especially with the scroll data (through the scroll editor). If you add too many scroll blocks, you may get rooms after the one you're editting being "eaten" and thus totally destroyed, which you definitely don't want. Thus, don't expand rooms too much beyond their normal capacity unless you know what you're doing. Especially important is backing up the game before expanding rooms too much - to test how large you can safely get them. It is possible with hex-editing to design rooms without fear of size limitations. This is covered in the Advanced SMILE section.
One saving grace about the SM engine is, it interprets no scrolls on a particular block as a green scroll - so you can have rooms that have no scroll blocks through part of them and still have the room work in most cases.
2.3 State Properties
Edit -> State Properties
You can change under what conditions a room goes into another state. When you're in the second state (or third/fourth state depending on which you want to alter the conditions for), go to state properties. There will be a drop down box with many different options, such as "zebes alive," etc. Using these, you can alter what conditions will cause that state to load. If you go to that option while the default state is up though, it'll just say there are no values to alter.
2.4 Enemy Properties
Hover Over Enemy -> Right-click -> Species
Basically any enemy can be changed into any other with the right configurations. When in doubt, look for a sample enemy thats placed in the original game and works there. Then copy its data and enter that data into your own enemy in a different room. Be sure to copy every value, because although some variables have a range within which you can alter the enemy's behavior, some enemies just won't work if you leave the Graphic Unknown 00 or such. (For example, Space Pirates.)
Whenever you're altering which enemies are in specific rooms, be sure to remove enemies you won't be putting in a room from the "allowed" list and adding the enemies which you will be using to the list as well.
As you alter more enemies you'll run into specific quirks that are unique to specific enemies - like Metroids have to be in slot 001 to work and they don't always make the correct sound effects - or the fact that Covens don't seem to work outside the Wrecked Ship. The slots seem to be specifically for graphics. If you have two different enemies in slot 007 for example, the enemy earlier on the list in slot 007 will take on the pallette of the later enemy in slot 007. You can use this to your advantage to get some bizarre color combos, like purple Rios using Zoomers and many other interesting palette shifts.
PM: I guess I could help add to this section with some details about the variables. Anybody who has a clue or info to add to the blank spots and such, please contribute.
Species ID: The 4-digit ID number, and the name in the yellow box (some of these are actually misleading, by not according to their official name). If you got the Chrono Trigger Knight (usually exposed by Offscreen Enemy to 0,0), the enemy is actually there, it's just not registered in the enemy index.
HP: How much damage it can withstand (corresponds with vulnerabilities and the projectile damage)
Damage: How much energy they take from you (this is assuming you're just wearing the Power Suit only, Varia divides by 2, Gravity by 4, I think)
Width/Height:
Sound:
Death Animation: How they blow up when killed.
00-small round, 01-screw attack, 02-large round, 03-small series, 04-large series
Grapple: How they react when you shoot the Grapple Beam at them. (the following values are the last two digits, just leave the first two digits as 80. Format is grapple effect, enemy affect unless said otherwise)
05-latches, stops until released, 06-ignores, stops, 07-curves, unaffected, 0A-latches, killed, 0F-stopped, unaffected, 14-latches, unaffected, 19-latches, delay die, 1E-latches, Samus hurt and knocked off, 23-die Samus die (I guess insta-kill on Samus if she latched on), 37-enemy killed, 3C-enemy becomes untouchable
Hurt Flash:
Layer:
00-very front, 02-in front of Samus, 05-between Samus and background, 08-behind all
Palette: Simple enough for most enemies (exceptions are few, including bosses that have palette state-shifts). You can shift palettes like in the GFX Editor.
Vulnerable:
Initiation AI:
Item Drop: Affects the chances of what pickups the enemies drop.
Enemy Tiles:
Enemy Touch: What damage you get by touching that enemy.
Enemy Shot: Same thing, only from projectile shots.
8023-Normal harm, 804C-no effect, A953-Mocktroid, EDEB-Metroid, 802D-normal shot hit to enemy, DC1C-shot reflected
PB Reaction: What they do after getting hit by a Power Bomb.
2.5 Room Expansion
Edit -> Room Properties
See 3.5 and 2.2.
2.6 Moving Rooms
Tools -> Map Editor
2.7 Pointers
Edit -> Pointers
Level Data-The pointer to the location where the room's data (tiles) is stored. Note that the bank can be changed; this means you can point anywhere in the file.
FX1 (Bank 83, 18000-1FFFF)- The effects for graphics and liquids in a room.
Enemy Population (Bank A1, 108000-108FFFF)-The information for what enemies belong in a room.
Enemy Set (Bank B4, 1A0000-1A7FFF)-Information for physical placement and type of enemies in the room. This is different from population.
Scroll (Bank 8F, 78000-7FFFF)- The scroll pointers for a room. Since you can use the scroll editor, you probably shouldn't change this unless you know what you're doing.
0000 = All screens with blue scroll blocks
0001 = All screens with green scroll blocks
Unknown1/RoomVar-For Jathy's RoomVar editor. No information about this system is currently available. Best to leave it alone.
Note: RoomVar (State) only works in 1.23.
FX2 (Bank 8F, 78000-7FFFF)- You almost never needed to change this, most rooms just use 0000; it factors into the landing site areas in Crateria and a few other rooms. This is also used for the "exploding Zebes/Ceres" effect in the escape sequence.
PLM (Bank 8F, 78000-7FFFF) - Determines what PLMs are in a room.
BG_Data (Bank 8F, 78000-7FFFF)- changing this will change the background configuration. Go find a room you like the background of, check out its number, for example, B920 or whatever, and you can go to a different room, enter it as that rooms BG_Data and use it in that room. If the BG_Data of a room is 0000, then the Layer2 bg is being used instead of the BG_Data pointer.
Layer1_2 (Bank 8F, 78000-7FFFF)- Affects segments of the backgrounds in specific rooms but it seems to be a major focus in parts of the backgrounds of Maridian rooms and the "landing site" areas in Crateria.
Door Out (Bank 8F, 78000-7FFFF)-Points towards info on how many doors are in a room and where they lead.
2.8 The Graphics Editor
Tools -> Graphics Editor
The Graphics Editor is a powerful and handy tool. It can be used to add in entirely new tilesets or completely retool old ones.
Palette Editor-Used to change the colors used by tilesets. Each tileset has eight palettes. The first color in every palette is actually the "transparent" color; no matter what color you set this to, it will always be invisible in-game. The first two palettes are used in CREs and by PLMs and shouldn't be edited recklessly; the first three usable colors (the ones that come after the invisible color) in the third and fourth palettes are also used by PLMs.
The palette, for no apparent reason, is limited to 218 bytes in Super Metroid by default. Going over this limit will likely corrupt tilesets after it, so don't do it! If you want a bigger palette, you can instead change the pointers for it via hex-editing. This process is explained in the Advanced guide.
You can also save a palette for editing outside of SMILE with the "Save TO" option, or load an edited palette into the graphics editor with the Load FROM" option. Size limits still apply when loading in new palettes, though.
Tile Table Editor-This is used to edit the tile table of a tileset (the tiles in the bottom window of SMILE). At the top of this window is a set of four 8x8 boxes; these four boxes compose one tile. On the right is displayed the 8x8 tiles that can be used; drag one of these onto the 8x8 box in the tile to replace it. Each individual box has can be flipped horizontally and/or vertically and can use a different palette set. Clicking on a box makes it "background" which means that Samus/sprites will always be drawn in front of it instead of behind it; a background box will be displayed with a small red box in its middle corner. Be sure to click "Save to ROM" when done editing each individual tile, or changes will be lost.
IMPORTANT! Adding new tiles to UNUSED (little white x's) portions of the table can completely corrupt later tilesets! Be sure to back up before taking that chance!
Tile Editing (Export)-If you want to draw entirely new tiles for a tileset, you need to export and edit its graphics file (GFX). There's a couple applications that can edit these files; I recommend Tile Layer Pro (TLP). You can make CREs (information used across all tilesets, like door appearances, missle pickups, save stations, etc.) or individual tilesets into graphics files. These files can then be opened in TLP and edited. When you've created new graphics and are ready to import them back, use the appropriate "Save to ROM" option to import the edited GFX file back in.
Special GFX-For editing intro screens or the title screen.
PM's Note regarding Mode 7: Most tile editors are incapable of doing this format (even Tile Layer Pro). One that's capable I'm aware of at the moment is in WindHex32. Since SMILE can't read this format in levels conventionally (those Ceres rooms that are mentioned in 5.1, though they don't matter much), it's best to leave it alone.
And another thing: If you're asked to limit the palette (such as the Escape State in Ceres), use a backup first. Casually, the palette range is 211-218.
2.9 Samus Aran Beauty Salon
Tools -> Beauty Salon
The Beauty Salon allows you to edit Samus' suit palettes and a bit more.
Samus Palettes:
Suit-Select the suit you want to edit.
Condition-The suit palette changes depending on various factors. The colors for screw attack or the suit's warm glow in heated areas are affected here. When changing the suit colors, be sure to change all conditions, so that the suit doesn't change colors all the time.
Samus Picture-Displays the new colors.
Palette Options-You can change individual colors on the palettes on the top-middle portion of the screen by clicking on them and editing the three color bars at the bottom-left. Please don't give Samus a neon green/yellow/pink armor. Be gentle on the eyes of your hack's players.
Other Options-You can use the displayed options to more easily edit the varying palettes used under certain conditions. The bottom-right color bar affects what color is pulsed or washed into when using the Heat Glow or Wash Out Colors options.
After editing each condition, be sure to use the "Save to ROM" button to save changes done.
Shifting the bar under the Samus Picture to the right allows you to edit a few other features, like the palette for the title or intro screens. The offset of the "I'm a genius!" option can be changed to the offset of any palette in the game and the amount of colors located at that address. Obviously you shouldn't mess with this if you aren't a genius.
2.10 Text Editor
Tools -> Text Editor
Self-explanitory, really. This can be used to edit the text in the intro, the text that appears at the beginning of escape sequences, or the names of areas on the map.
2.11 Game Behavior Dialog
These are almost all self-explanitory functions. All values here are stored in hex (except for escape timers), so if you set a Big Energy pickup's energy value to "10" you'll actually get 17 energy from it.
Edit -> Special -> Game Behavior
2.12 Layer 2
Edit -> Special -> Layer 2 -> Add|Remove
Layer2 can be used for backgrounds. Note that adding a second layer is almost definitely going to take up extra tile space in the room, and making complex backgrounds will take up even more room. Keep in mind the limits of your room's size when doing this!
2.13 Door Editing
Hover over door tiles -> Shift+Right-click -> Various Door Options
Shift+Rightclick on the back of "Door A" and select clone door, then enter a name. Then go find whatever door you want to link it to, for example "Door B", clone that door, then go back to Door A and shift+rightclick it again and select "Edit door." Select whatever you named the clone of Door B and then click 'transfer properties' and 'remember'. Then go to Door B and repeat that process only give it Door A's information.
Important: If your door is going to transverse areas, like from Crateria to Brinstar, you need to manually set the "bitflag" to 40. If you don't do this, the map will get screwed up. Leave the mouse over the second "field" in the door editor and you'll see that field is the bitflag. It's usually 00.
Important: Doors are tied to a specific door # in the door editor. If you delete a door with a harder to find #, you may run into problems. Don't delete doors carelessly.
To make any tile a door, or change the door # ~[Squishy_Ichigo]~
Double click on the desired tile in the bottom left window of SMILE to bring up the "Make Defaults" window. This window allows you to change the defualt property and BTS value of the tile. For doors, your going to want the "Propery Byte" to be set "Door" and the "BTS" to be set to the number you want the door to be. You could also use the scroll down "act as" bar for the tile your currently holding.
You don't have to worry about the color of doors - as the portion of the door that gives it its color is merely a door cap - a PLM that can be easily dragged and placed on different doors to your liking, as long as the room has PLMs in it.
Some rooms will not accept ceiling or floor doors. These are typically rooms with no scroll blocks. There is also a difference between green and blue scroll blocks with regard to how they interact with ceiling or floor doors. If you're getting an error while going through one, try changing the scroll near it from green or blue or visa versa. Floordoors seem to have an affinity for blue scroll areas and ceilingdoors have an affinity for green. However, this is not always the case, in some rooms its reversed or they won't work at all. Don't plan out door positions without testing to see if they work with regards to ceiling or floor doors, as they are more finicky than left/right doors.
Also, while elevators work similar to door transitions, it's not recommended that you try to edit them in SMILE yet, unless you really know what you're doing.
Please note that I do not know everything about elevators, namely their bitflags and what they do. I just copy bitflag settings from pre-existing elevator doors and it's worked thus far.
SMILE's file:
D73F (it's an elevator*)
[Special] = 2C00
[Speed] = 0000/0001 for down/up
[Speed 2] = Y position to make the elevator first appear when entering the room on an elevator. 0018 is a common value for elevators going down into a room. 0Z40 works quite well for elevators going up into a room, where Z is the screen just below where you emerge from.
*Do not include this in the Enemy Allowed list or it will crash your room.
**Door tiles with a RoomID of 0000 must be directly underneath the elevator, or you won't be able to stand on and use it.
***Elevators need 2 door in their path to function correctly. More information on this is included with the door editor.
The first thing you need to know about elevators is how to set up their doors. It's not difficult. Underneath the elevator enemy, you need door tiles with code that has no room ID. You really only need the first 3 boxes in the door editor. Just use the bitflags from another elevator door and I don't think the direction really matters for this one. This is a sample door that's working in my hack.
0000 F8 03 00 00 00 00 0000 0000
For the door tiles that cause the room transition while on an elevator, it's the same thing, only with a room ID involved. Another example:
B236 A0 02 00 00 00 00 0000 0000
Now that you know all you should need to know to create doors for custom elevators, the more tricky parts come into play.
Quote from: SMILE files
[Speed 2] = Y position to make the elevator first appear when entering the room on an elevator. 0018 is a common value for elevators going down into a room. 0Z40 works quite well for elevators going up into a room, where Z is the screen just below where you emerge from.
About this, you can get some interesting graphics errors if you make the elevator appear outside the range of the room itself, but please refrain from doing so, it may cause other more serious errors. The one time I tried ended up with the room being corrupted somehow, since then I've just followed SMILE's instructions here and its worked out well.
How to set up an elevator to pass through multiple rooms. The checklist of needed materials:
1. An elevator enemy in every room
2. 2 rooms for each room in-between the top and bottom rooms of the shaft.
There is a reason all elevators in Super Metroid only have one door transition on their way. The direction you set an elevator to go when you ride it also sets the direction the elevator moves when you enter the room on an elevator. An elevator that heads up will only head down when you emerge into the room on an elevator, and vice versa. The direction of the door you go does not affect which direction the elevator heads.
So, what can you do? Notice I mention 2 rooms for each room in-between the top and bottom. When you ride down, you will head through one half of those rooms, each with the elevator enemy in them set to up. Then, when you ride the elevator back up, the door up will point to the other half, which will have the elevator enemy set to down. A simple rule is every room you go through should have an elevator the opposite direction of the first room.
In case you didn't quite get that, here's a visual example.
Rooms: 00(D) , 01(D), 02(U), and 03(U). (D and U mean the elevator enemy in them is set to down or up, respectively)
The setup for going down from the top is this order:
00(D)
02(U)
03(U)
For going back up, you want to go through:
00(D)
01(D)
03(U)
One last note. When riding down on an elevator, they tend to be whiny about going all the way down to go through a door that is on the bottom of the room. If you ever encounter problems with elevators stopping short of the door, put the door one screen up from the bottom and make the bottom screen a red scroll. That usually fixes the problem.
2.14 Save Stations
Edit -> Area Load Stations
Region : The area its in (Ex. Crateria, Brinstar, etc)
Index : (using SMILE 1.32) The same number as the [low] on the save station PLM
RoomID: the room its in
Door Data: value for a door that connects to that room, just press "L" over a door in another room that connects to RoomID.
Unknown: Usually 0000, sometimes 0001?
Scroll X: Horizontal Scroll - Counts "scroll areas" for example, 0000 is the top left 0100 the next one to the right, and so on!
Scroll Y: Same as Scroll X, just with vertical. EX. 0000 is the top left, and 0100 is the next one down!
Samus Y: Vertical count on pixels 0000 is the top, and inceasing the number goes down
Samus X: Horizontal count on pixels 0000 is the middle?, increasing the number goes right
Save:
Done:
Thread title: