Table of Contents
Frequently Asked Questions
These are typical issues and errors most people stumble upon when they are getting started with SMILE. For questions how to edit something, refer to the Super Metroid Mod Manual, as it covers most if not everything SMILE related. If your issue is still not resolved by any of the given answers, please refer to the Engine Works Board, and look if someone already made a topic about it.
General Questions
Q: “How do I make it so a door bubble DOESN'T close behind me when I enter a room?”
A: You need to go into the door editor for the door LEADING into that room by pressing D over the door tiles or right clight. Click on the picture of the door bubble and it will just show Samus without the door. Now save the door and the room.
Q: “How do I change WHERE a door bubble closes behind me when I enter a room?”
A: You need to go into the door editor for the door LEADING into that room. In the editor you will see various numbers, which tell the game which room to transition to, what screen, etc. The values for where the bubble closes are the Xi and Yi, in 16×16 blocks (They count the WHOLE room, not just the screen). After any changes, save the door and the room.
Q: “Why do my doors open backwards when I shoot them?”
A: The direction a door opens in not determined by the way the tiles are facing, but rather, the BTS of the door. The top left tile of the door bubble will have a BTS value from $40 to $43. Each value opens the door in a specific direction. If your door is opening backwards, swap the BTS between $40 and $41 for horizontal doors (left and right), or $42 and $43 for vertical doors (up and down).
Q: “When I try to quickmet, Samus keeps dying, even though I made sure the settings are correct, what do?”
A: This is due to the SRM file path being incorrectly set in SMILE, causing it to save it to a different location that it is actually being read from. The SRM path has to be set to the Saves directory of your preferred emulator.
Q: “How do I remove the Scrolling Sky background from the Landing Site?”
A: Go Edit > Pointers. In the window that pops up, change the FX2 to 0000, BG_Data to 0000, Layer1_2 to 91D3. Now in the BG Scrolling (Tools > BG Editor > BG/Layer2 Scrolling), change it so it uses a Layer 2 Background and save.
Q: “The sky BG is still grey in game, even after I changed the palette in SMILE.”
A: The palette for the sky is run by the FX1 option “Stay Grey”. In the FX1 editor, make sure you untick this box when making a custom palette. This is the effect that also runs the flash of light, so you'll lose that.
Q: “How do change what area a room is in?”
A: Go Edit > Room Properties. A pop up will appear with several options such as area, size, grid locations, etc. Just change the area in the selection box and save the room.
Q: “Why do my rooms / GFX get all messed up after I go through a door?”
A: This is caused by the scrolling not being in the correct position when the door transition begins, and thus when the door transition ends, the scrolling will be out of sync with the refreshing of the room tilemap, which is what causes the garbled rooms. Most commonly it's caused by door tiles NOT being on the edge of a screen behind a RED scroll block (or the edge of the room), or by a ceiling/floor door being in the wrong color scroll (GREEN for up, BLUE for down). NOTE: Saving S-RAM by “in-game saving” when encountering this glitch will allow you to fix it without reloading a state.
Q: “SMILE isn't loading my ROM”
A: Either you do not have the correct ROM (JU), or you have corrupted the ROM with a hex editor or bad repointing. Several things that can cause SMILE to crash are corrupted level data or tiletables, the ROM header getting corrupted ($81:FFC0-$81:FFFF), attempting to edit door properties for a door BTS that does not exist in that room, or the ROM is not made of full banks (last byte is at 7FFF or FFFF).
Q: “SMILE is showing a rediculous amount of space for a room. Is it editable?”
A: Yes, but you should be careful. If you have already edited the room quite a bit, you may have overwritten something. There is absolutely nothing wrong with the room. The incorrect size is a misinterpretation by SMILE of the level_entries.txt in SMILE's folder. The entries are stored in room order, rather than data order like they should be for SMILE to calculate correct space. There are also several entries missing, including the end of the Crateria Chozo Missile room, and multiple WS 2-stated rooms.
Q: “How do I change the number of items you get from a missile pack?”
A: Go into SMILE and right-click any PLM. Then scroll down to select a missile, and there is a PLM “value”. This is how many of that particular item you get per tank. You can edit the values for each item, as well as all 3 types of items (open, Chozo, hidden). DO NOT change the values for any suit upgrades unless you know what you're doing, as these are items bits that are set when collecting that item. You can safely edit Missiles, Supers, PowerBombs, Energy/Reserve Tanks.
Q: “How do I add enemies or items to a room without any?”
A: Go Edit > Pointers. You need to repoint the PLM, Enemy Population and Enemy Set pointers (see below on repointing). Then go to Edit > Special > Enemy/PLM +/-.
Q: “How do I repoint data to free space?”
A: Go Edit > Pointers. Open up your ROM in a hex editor, and look for a chuck of FF's (this is free space) in the appropriate bank. The correct bank for each type of data is shown in the pointers window. When you find a chunk of FF's, write down the last 4 digits of the address. If it is below $8000, you MUST add $8000 to it. If the address you got was $CD45, that is already above $8000, so you can use that. If the address was $257F, it's below $8000, so you add $8000 first to get $A57F, which you can now use. You just need to put the address into the white box for the correct pointer, then save pointers.
Q: “What do the Vertical and Horizontal block types do, and how do I use them?”
A: These extend the block properties of the block they are pointing to, to the Horizontal/Vertical block itself. They work exactly the same as the “Arrow PLM” that are floating around everywhere in the original game, but without wasting valuable PLM space in $8F.
To use them, simply select the block you want to copy attributes to, and set the BTS of that block so that it points to the block you want to copy attributes from. In a Vertical block, a BTS of FF will copy attributes from the block directly above it. a BTS of 02 will copy the block 2 blocks below it, but the block directly below it in between will be unaffected. Horizontal blocks work the same way. You can chain these blocks together to target attributes from blocks way across the room, or cover a wide area. If you want to copy a block that is one tile up and 2 tiles left, put a Vertical with BTS FF on the destination block, and a Horizontal with BTS FE on the block above the Vertical one. The Horizontal will copy the attributes of the block 2 to the left, and the Vertical block will copy those attributes from the Horizontal block above it.
Q: “What does BTS mean?”
A: Behind The Scenes. It refers to the block properties that are not immediately visible in game or SMILE, usually ran when a block is touched or shot.
Q: “Editing HUD and status screen. How do?”
A: It requires a tile editing utility such as Tile Layer Pro, but the address you want is D3200. Don't forget to turn on Gameboy mode (or four color equivalent in your tile editor of choice.)
Q: “Why can't I see the first two layers of tiles in Tile Layer Pro?”
A: This is a bug in TLP, caused by the program expecting to open a rom with a header. TLP will start displaying tiles from $200 onwards, even for headerless files, which is why you can't see the top two lines in a GFX file. Use this patch to fix it: http://www.romhacking.net/utilities/361/.
Q: “Why is Draygon moving strangely in my hack?”
A: Not commonly known, but Draygon's movements in the room are based on her original position in the ROM. She is normally offscreen to the top left of the room. If Draygon is moving weirdly, try moving her back to the top left of the room (the original coordinates for all pieces of Draygon are X = $FFB0, Y = $FFB0)
Q: “Do I need hex or asm?”
A: Alrighty, so…. I guess we start at the lowest level. Everything sprouts from Boolean logic, the fact that electronic circuits are either “on” or “off”. From this comes binary and “machine language”. Anything, anything at all, that you send to your computer to do can thus be represented using binary, and as such hexadecimal, as it's simply another way (and much more convenient way) of seeing data. You could instead use a program to see the binary code of Super Metroid if you wanted, but this would be inefficient.
ASM, or “Assembly language” is a higher level of coding that converts the “code” to machine language so your computer can interpret it. Super Metroid is coded using the SNES' native format, 65816. It follows a very specific set of rules, like all programing languages that you must understand to use fully. To apply it, you use a compiler, to change the code from something that we as humans can understand more easily to machine language. This can then be seen using your hex editor. If you know what means what, anything, and I do mean anything, can be done using a simple binary or hex editor. Pretty cool right?
So the shortish answer is this. To do what it is that you want likely takes knowledge of ASM to do, but with that knowledge, you can share this information in either a .asm format or a hex format, depending on which way is best for the specific situation.
SMILE Known Error Messages
Runtime Error 6 - Overflow
Running SMILE 2.5 after running Parlor or equivalent throws this error. Delete your INI file if you really need to use SMILE 2.5 again. Occurs at start-up.
Runtime Error 9 - Subscript Out Of Range
SMILE throws this when invalid data is encountered, either when a ROM is opened that isn't Super Metroid (or a hack of it,) or when pointers or level data are invalid. If this error is encountered at start-up, create a new INI file with SMILE 2.5. If this error is encountered in your current hack work, try a backup.
Runtime Error 75 - Path/file Access error
Encountered when SMILE can't access the data in your ROM file due to lack of file permissions. Make sure you're not attempting to access something on a read-only drive or while it's being sync'ed by Dropbox (the latter disallows access to the file during an upload.)
Runtime Error 76 - Path not found
This error occurs when SMILE tries to read a directory (mostly SRM or Emulator path in SMILE 2.5) that does not exist or was moved. To fix, delete your .ini file. If that doesn't help, make sure your Plugins folder exists in the files folder. Occurs at start-up. SMILE JX requires you to download version 2.8 before you download one of its updates, for the updates do not include all of the files necessary to run. Overwrite SMILE JX 2.8 with updates!