HOW TO EDIT SUPER METROID Written by begrimed. SMILE RF created by Scyzer and Jathys. Page last updated: February 15 2016 Page color scheme: white | black

▲ GETTING READY TO ROM HACK ∨

Before you even do anything at all, you should make a ROM hacking folder of some kind. The way that it's organized all comes down to personal preference. Editing Super Metroid will almost always eventually involve creating and editing a lot of small files, so it's worth considering. A simple way to do it would be to just create a "ROM hacking" folder in your "My Documents" folder, and then add (or move) folders to \ROM hacking\ as needed, such as the \SMILE RF\ folder.

Download the correct Super Metroid ROM.

Insert your official Super Metroid catridge into your copier device and dump the contents of the ROMs yourself. Or just look through the first page or so of results from googling "Super Metroid (JU)[!]" and pretend you're being totally legitimate. You should find a .SMC or .SFC file that is exactly 3145728 bytes (3072 KB) in size, and should have an MD5sum matching 21f3e98df4780ee1c667b84e57d88675. If your copy is different, it might have a header or it might not be a clean ROM; you can check MetConst's Howto for more info or you can just keep looking for a better ROM. Once you've confirmed that you have a working copy of the correct Super Metroid ROM, you should keep a completely unedited 'master copy' of it somewhere so that you don't have to re-download the file if you accidentally destroy it later.

Download SMILE RF and make sure everything works.

If you've never used SMILE before, or you just want to learn everything fresh over again, you should use the current version of SMILE RF. NOTE: This guide was written for the 3.0.80 offline version, which is pretty old by this point and is not recommended.

If SMILE RF won't open because of a missing MSINET.OCX file (which is needed for the online functionality), try following these steps:

1.) Place MSINET.OCX (included in SMILE RF .zip if you download it from Scyzer's homepage) in "\Windows\System32\" folder. If you are running a 64Bit system, also place it in "\Windows\Syswow64\".

2.) Click Start, search for "CMD", then right-click and Run As Administrator. You must run as an admin or it will not work.

3.) Register the file by typing "regsvr32 C:\Windows\System32\MSINET.OCX" OR "regsvr32 C:\Windows\Syswow64\MSINET.OCX", depending on where you placed the file.

If your firewall or anti-virus has problems with SMILE RF, it's probably because of the new version checks and the bug report feature. Making SMILE RF a firewall/anti-virus exception should fix the problem. The offline version of 3.0.80 won't have any of these issues, and it also doesn't require (or include) MSINET.OCX.

Also consider downloading this guide if you think you'll find yourself coming back here often! It'll save bandwidth for you and us both. All you have to do is extract the contents of SMMM_3.0.80.zip somewhere on your computer, then open any of the included .HTML files to view this guide locally from your computer whenever you want, without the need of an internet connection.

SMILE RF's folders and files.

You won't need to bother with most of this, but it's still good to know what everything does.

\SMILE RF\: main program folder. Contains the SMILE RF.exe file that opens SMILE itself, and also the Files folder, which contains everything else needed by SMILE to work properly.

\Files\Clipboard\: default save location of the .CLP (clipboard) files that SMILE creates when you click the "Save Clip" button in the Room MDB tab (#26). This folder is empty by default.

\Files\Custom\: this folder allows you to work on multiple hacks without needing to create a copy of the entire \SMILE RF\ folder for each hack. The "Rom_Name" folder contains a duplicate set of the Data, Enemies, Menus, PLM and TestRoom resource folders. Any files that are missing from these duplicate resource folders will be read from their default locations in the Files folder. Rom_Name only exists to demonstrate how the Custom folder works; you can delete Rom_Name if you want, or give it the same filename as another hack. Example: if you're working on a different hack called "Different_New_Hack.SMC", you'd rename the Rom_Name folder to "Different_New_Hack". After that, opening Different_New_Hack.SMC will make SMILE RF use the contents of the Different_New_Hack folder. You can have as many new hack folders like this as you want. You can also have multiple ROMs read from the same folder by using an underscore in the ROM filename (e.g., "ROM-FILENAME_123.SMC" would use the SMILE RF resources from "\Custom\ROM-FILENAME\", but "ROM-FILENAME123" would not).

\Files\Data\: the .TXT files in this folder determine most of SMILE RF's drop-down menu options.

\Files\Enemies\: the .TXT files in this folder make up the contents of the "Enemy Info" window in SMILE RF's enemy editor. The .GIF files are used as the preview images in the enemy selector, and also throughout rooms in level editor.

\Files\Images\: BTS icon and door editor button graphics for SMILE RF. The "Metbuddy" folder is for Metroid buddy.

\Files\Menus\: the .VAL (value) files in this folder are how most of SMILE RF's settings are stored. The lone .RFTT file is used by the mode 7 scene editor.

\Files\PLM\: the .TXT files in this folder make up the contents of the "PLM Info" window in SMILE RF's PLM editor. The .GIF files are used as the preview images in the PLM selector, and also throughout rooms in the level editor.

\Files\Temp\: SMILE RF creates and overwrites several different types of files in this folder as needed whenever QuickMet is used. This folder is empty by default, and the files that SMILE RF creates in it can be deleted.

\Files\TestRoom\: the three files in this folder are needed for QuickMet to work.

\SMILE RF\Changes.TXT: previous versions and changes made to SMILE RF over time.

\SMILE RF\MSINET.OCX: needed by Windows 10 for SMILE RF's online features to work.

\SMILE RF\RFHelp.TXT: hotkey list and explanations of the main menu options.

\SMILE RF\Files\Lunar Compress.DLL: used to read and write compressed data (level data, tileset data, palettes, etc.)

\SMILE RF\Files\SMILE.DLL: used by the tile table and level editor to draw transparent sections, BTS lines, etc.

\SMILE RF\Files\SMILE.INI: all SMILE RF settings that aren't QuickMet settings or .VAL settings are kept in this file.

\SMILE RF\Files\Xkas.EXE: used by SMILE RF to apply ASM patches.

Set up QuickMet for easy room testing.

QuickMet is a feature in SMILE that lets you test rooms that you're working on without having to go through all of the options and start from the beginning of the game each time. The very first time you press Ctrl+E in SMILE RF's Level Editor, a file selection window will pop up. Choose the .EXE file for your preferred SNES emulator, and now the next time you press Ctrl+E, the emulator will launch. After the Nintendo logo fades away, Samus will appear wherever your mouse cursor was at in the room when you pressed Ctrl+E. The QuickMet settings also allow you to choose which items of Samus has collected and/or equipped, starting energy/ammo counts, and more. You can choose a different emulator later by clicking "Preferences > QuickMet Settings > Emulator Path".

THE INSANELY ABSOLUTE IMPORTANCE OF MAKING REGULAR ROM BACK-UPS

It cannot be stressed enough how important creating regular back-ups of the .SMC file that you're working on is. Seriously. Make regular and frequent ROM back-ups a habit. All you literally have to do to create a back-up ROM is right-click on the .SMC file and select 'copy'. After that, right-click a second time and select 'paste'. That's all. The copies are even automatically numbered for you. Isn't that nice? Back-ups are your friend, and they will spare you so much pain. There is no reason to not make back-ups.

In addition to on your computer, keep back-ups of your hack stored on web servers, extra hard drives, USB thumb drives, email them to yourself, burn them to CDs or DVDs if you need to. You do not want to lose a thousand collective hours of work on a hack because your computer broke and you didn't have a copy of your hacked ROM anywhere else except on your dead computer's hard drive.

IF YOU ARE EVER ABOUT TO APPLY A PATCH OR MAKE AN EDIT THAT YOU ARE EVEN SLIGHTLY UNSURE OF, CREATE A BACK-UP FIRST. Preventing catastrophe is just that easy. If hard drive space is an issue, you can create back-up IPS patches of your hack instead (see IPS patch creation).

Constant experimentation, trial and error, broken ROMs and strange crashes are normal.

It is pretty much impossible to avoid experiencing all of these things and more as you journey through creating your own Super Metroid hack. Constant experimentation especially - you will need to test everything constantly as you're working on it, or you might waste huge amounts of time stepping backwards through your edits to figure out the problem. TEST EVERYTHING, ALWAYS.

Set your hack aside to have fun and experiment on test ROMs occasionally.

Take an unedited copy of Super Metroid to try out ideas on, test patches or hex edits on that you're curious about, and let yourself screw around with no fear of losing any of your work. Learn how it looks and feels to break Super Metroid in horrid ways. After the ROM is destroyed, just delete it and start over again from another copy! If you're ever not sure how something works or what it does, try it out on a test ROM first.

Keep a log of every patch that you use, along with where they write to.

Having a .TXT file with information about your hack is a good habit for many reasons. Use it to keep your ideas, to-do lists, known bugs, places that ASM patches you've applied are writing to, etc. If you're applying an IPS patch and the author doesn't specify where the patch writes to, you should use File Compare to find that information yourself and write it down. This will be necessary if you plan to use a lot of patches in your hack, because many of them write to the same areas of free space by default, which means that you'll sometimes need to change where they write to.

Please report any SMILE RF bugs that you discover!

If you discover a crash or some kind of bug with SMILE RF itself, click "? > Report Bugs / Feedback" and write out a clear description of the error that you experienced. Can the bug be done consistently, or did it only happen once? Is it possible to take a screenshot of the error?

What kind of hack do you want to make? Will it be worth it? Who is your audience?

You should consider all of this now and spare yourself a LOT of possible wasted time later. Is this hobby really for you? Real talk: overwhelmingly, most of the people who try to make a Super Metroid hack have either given up, or they released something they didn't really want to release, and then they gave up. You are probably going to give up. Modifying Super Metroid is not extremely difficult, but it is also not something that you can do fast. You will probably be at this for years if your goal is to make something lastingly notable and polished. Be ready for the possibility of restarting projects repeatedly, being unable to solve problems for weeks or months until you've learned more, and giving up on dream ideas that are impossible to do.

Personal satisfaction is also probably the most important thing there is about this hobby. If you don't like Super Metroid enough to consider working on it as an unpaid, illegal side-career, then you will probably lose the motivation to keep working on your project after awhile. Knowing your audience is also a big deal, because it allows you to scale your expectations.

Do you want to make a hack that tons of people will play and enjoy for years? If so, MAKE YOUR HACK EASY, MAKE YOUR HACK PRETTY, MAKE YOUR HACK WELL. That's all there is to it. You are creating a game, not a hack. The difficulty is in the simplicity of actually sticking to those three simple rules above all else, and not becoming tempted by other ideas later that compromise your initial vision. If your hack is extremely easy for you to play through, then that means it should be about average difficulty for somebody who only played and enjoyed Super Metroid a long time ago, but recently discovered that ROM hacks of it exist.

Do you want to make a hack that challenges veteran Super Metroid players? If so, get rid of any expectations you have about how people will feel about your hack. Almost everyone will simply not like it because it's too difficult, and there is nothing you can do to make them enjoy it or appreciate the amount of time and work you put into it - at the end of the day, you still created something that they do not feel is worth taking their time to play through. This happens because proportionally rewarding the player for accomplishing difficult tasks becomes much harder to do unless you know assembly programming, which means that you just have to hope that the player's personal sense of achievement is enough to keep them interested in your hard game. Almost always, it will not be.

It will probably always be a bad decision to try making a fun hard hack as your first project. Hard hacks are only interesting to veteran players of the game, which is a very small number of people. If that is your intended audience, go for it, but don't expect your hard hack to gain much attention. Difficulty is more often just... difficult, and not that fun.

Are your big ideas actually possible?

Until you know the limits of the SNES, your Super Metroid hack ideas will probably be impossible, or at least very hard to code, and nobody will want to go through the trouble of coding it for you unless they feel that your hack might actually have the potential to successfully release. Understanding the limits of the SNES takes time, but if your ideas are really simple, or if you're willing to use a much more simplified version of your original idea instead, then it becomes much more likely. It'll make things a lot easier on you if you just assume for awhile that none of your ideas will be possible at all (while still confirming with those more knowledgable whether they actually are impossible). Once enough of your ideas have been shot down, you'll start to see why.

ALWAYS REMEMBER that you can come back to it later, because you will absolutely have to.

Don't be discouraged if you have to give up on something because it just doesn't make any sense to you yet. Try again later, maybe even much later. Giving up on something and then un-giving up much later is pretty common. You'll start to lose motivation pretty fast if every attempt to work on a project ends in confusion. Making a complete overhaul like Super Metroid Redesign or Hyper Metroid requires deeply editing many things besides the game's rooms.

If you start feeling overwhelmed with how much work remains on your hack for how little you still know about hacking, then try to give yourself some tunnel vision and do something else that you already know how to for awhile, and get better at that instead. Build up some raw progress and give yourself more incentive to figure the other stuff out. You could probably apply that last bit of advice to life in general, actually. Neat. Have fun.

Ready to start hacking?

If so, you can skip down to part 2, which is the tutorial portion of this guide. Parts 1 and 3 are reference material.

1.

"ROM" menu.

Open ROM: headered or unheadered NTSC Super Metroid ROMs only (.SMC files).

Save Room: instantly saves currently opened room. Hotkey: Ctrl+S (hotkey only works while "Level Editor" window is in focus). If the room cannot be saved because of level data usage, a pop-up window will tell you how much data you'll need to free up before the room can be saved.

IPS / ASM patch:

Create IPS Patch: creates a .IPS file of your hack, which is what lets other people play it without them having to download your whole ROM.

Apply IPS Patch: applies an existing .IPS file to any Super Metroid ROM that you currently have open in SMILE RF. BE CAREFUL WITH THIS FUNCTION! Applying the wrong IPS to your hack could be extremely difficult to undo if you don't make frequent back-ups. A back-up is automatically created in SMILE RF\Files\Temp\ when you apply an IPS or ASM file with SMILE RF.

Apply ASM: applies an assembly (.ASM) file to your ROM.

Reapply previous patch: automatically reapplies the last .IPS or .ASM file that you used. This option only becomes visible after an IPS or ASM patch is applied, and it's great for quickly and repeatedly testing edits to ASM patches when you're trying to fix bugs.

Header:

Add Header: inserts a 512-byte SMC header at the very beginning of your Super Metroid ROM file.

Remove Header: removes the 512-byte SMC header if it's present. ALWAYS remove the header. It is useless for ROM hacking, and all of the technical information you see later on will be off by 512 bytes if your ROM has a header.

Expand ROM: inserts an extra 32,768 bytes of free space to the very end of your Super Metroid .SMC ROM file, which is mostly used for extra rooms and graphics. This can be done up to 32 times to the ROM, bringing its headerless filesize from 3,072kb to a maximum of 4,096kb (4 megabytes).

If you decide to change the ROM type to ExLoROM, which RF can do, then the maximum becomes 8 megabytes.

Reset Cheksum: fixes the 'bad checksum' message that appears when you first load just about any hacked ROM in some emulators. If you use Snes9X, this means that the loading message will also change from yellow back to white.

File Compare: compares the .SMC file currently open in SMILE RF with another .SMC file of your choosing. If there are any differences between the two files, then a .TXT file is generated that neatly lists every single byte that isn't the same between both files. Can be amazingly helpful with finding and fixing bugs if regular back-ups are kept.

2.

"Tools" menu.

Undo: only undoes changes you've made in the level editor window. Can be done up to 32 times. The undos/redos for the room you're working on will be cleared if you open a different room. Hotkey: Ctrl+Z

Redo: opposite of Undo. Also can be done up to 32 times. The undos/redos for the room you're working on will be cleared if you open a different room. Hotkey: Ctrl+Y

Clear Room Tilemap: erases the whole room, including its layer 2 background if there is one. Only affects the contents of the level editor window. Can be undone if clicked by mistake.

Offscreen PLMs To Screen: this will be needed if you resize a room to make it smaller and leave PLMs behind on screens that no longer exist. Clicking this option instantly moves all unseen PLMs to the upper-left part of the room.

Offscreen Enemies To Screen: moves enemies that have been "cropped out" of the level editor to the upper-left part of the room.

Save Bitmap:

Room: creates a .BMP image of your room. View preferences like Level Tile Size (#), Brightness (#), Scrolls (#) and BTS (#) will be included in the picture if they're switched on. Enemies and PLMs won't appear in screenshots because their graphics aren't actually being read directly from the ROM like level data is. The .BMP file is created in the same folder as the currently opened ROM.

Area (Small): generates a single large .BMP image of an entire area, with the zoom set to smallest (8x8 tile view). The .BMP file is created in the same folder as the currently opened ROM.

Area (Large): like Area (Small), this creates a single, much larger .BMP image of the whole area, with the zoom set to default (16x16 tile view). The .BMP file is created in the same folder as the currently opened ROM.

Map: creates a 512x256 .BMP image of the area's map. The .BMP file is created in the same folder as the currently opened ROM.

Special Editors:

Mode 7 Editor: opens up the Mode 7 Scene Editor, which lets you edit certain tilemaps, such as the title screen.

Message Box Editor: lets you edit the black pop-up text boxes (item names, save prompts, etc.)

3.

"Preferences" menu.

View:

Level Editor Size: how many screens for the level editor to display, which is how much of the room you can see at once while editing. Play around with this until you find a good fit for your monitor's resolution. Screens are those red, green or blue boxes that neatly divide the room. If you don't see them, click "Preferences > View > Layers" and make sure "Scrolls" is checked.

Level Tile Size: this is basically the same thing as Zoom In and Zoom Out in other programs. The default size is 16x16. "8x8 (scroll editor)" is required for changing the colors of the red, green and blue screen colors. Hotkeys: "Home" key to zoom in, "End" key to zoom out. These hotkeys only work while the level editor window is in focus.

Tile Table Size: 16x16 or 32x32 display for the tile table ("Windows > Tile Table").

Layers:

Layer 1: main foreground graphics layer, used for floors, walls, ceilings, doors, etc. Hotkey: F1

Layer 2: optional second graphics layer. Drawn underneath layer 1, usually used for the room's background. Hotkey: F2

BTS: invisible tile-type layer. Determines the physical attributes for each tile in the level editor window (making a block breakable by shooting it, for example). BTS stands for Behind The Scenes, due to its responsibility in making blocks behave the way they should. Hotkey: F3

Scrolls: the red, green or blue squares that outline every screen in the room. To change their color, switch the Level Tile Size to "8x8 (scroll editor)" and click on them. Hotkey: F4 to toggle viewing room screens.

PLMs: room objects that aren't part of the BTS layer, such as items, save stations, all of the door caps that aren't blue, etc. Hotkey: F5

Enemies: hide or unhide all enemies in a room. Hotkey: F6

Show All: unhides any and all of the above layers if they're hidden. Hotkey: F7

Hide All: hides all but Layer 1 and Layer 2 with a single command. Hotkey: F8

Brightness: by default, SMILE RF is set to the lowest brightness level, which is no brightness applied at all. Hotkeys: "Page Up" and "Page Down" keys.

Snap Enemies to Grid: adheres enemy placement to an 8x8-pixel grid so they can be placed on floors, walls and ceilings more easily. It's also sometimes nice to turn this option off so enemies can be placed with exact pixel precision. Hotkey: hold Ctrl while moving an enemy to temporarily reverse this setting.

Move Possessors Together: possessors are enemies made of several pieces. "Pieces" means that multiple copies of the same enemy are needed to complete the whole and make it work properly. The Shaktool that destroys the wall and grants you access to Spring Ball is made up of 7 enemies, for example. Hotkey: hold Alt while moving a possessor to temporarily turn off this setting.

Show Scroll PLM Changes: allows you to set your cursor on a scroll PLM and have the screens it affects, along with the colors used highlighted for you.

Enable Mode 7: enables the viewing and editing of mode 7 rooms, such as the Ceres elevator room.

Palette Format:

TPL (.tpl): any palettes exported by SMILE RF will be in .TPL format, which is used by Tile Layer Pro to edit graphics and colors.

YY-CHr (.pal): any palettes exported by SMILE RF will be in .PAL format, which is used by YY-CHr to edit graphics and colors.

FaTilety (.fpl): any palettes exported by SMILE RF will be in .FPL format, which is used by FaTilety to edit graphics, mode 7 graphics and colors.

QuickMet Settings: QuickMet is used by pressing Ctrl+E anywhere in the level editor. This launches your emulator of choice (if this is your first time using the QuickMet command, you'll get a load-file pop-up, which you'll need to use to browse to your emulator's folder and load your emulator's .exe file). Samus starts with no equipment and 99 energy by default, which you can change through the SRM settings.

Note: when you use QuickMet, Samus will appear exactly in the room where your mouse cursor was placed in the level editor when you pressed Ctrl+E. You'll be doing this a lot. If you accidentally start with Samus trapped in solid rock, or with the camera messes up, just close the emulator and use QuickMet again (the camera works best if Samus appears near the middle of the screen).

SRM Settings: Samus's equipment and vulnerability while testing rooms with QuickMet. Most of this is self-explanatory, and you shouldn't have to mess with any of this if you don't want to. Just choosing an emulator path is enough. The [$####] addresses next to all of the energy and ammunition counts are RAM addresses, which become helpful to know once you start learning assembly (ASM).

NOTE: you may need to delete the "QuickMet.srm" file for changes made to the SRM settings to take effect properly. QuickMet.srm is located in the folder where your emulator's save files are kept, and also SMILE RF\Files\Temp\

The "$0000 --> Add Event / Remove Event" options allow you to have an event trigger for the purposes of testing (such as making the QuickMet recognize that a boss is dead without having to kill the boss). Type an event value into the box, then click the Add Event button to have your value added as an option that you can select from the drop-down menu. Also see room states / events.

Emulator Path: which emulator will be loaded when the QuickMet hotkey (Ctrl+E in the level editor window) is pressed.

Save RAM Path: for emulators that require their .SRM files to be stored somewhere specific, rather than in the same folder as the ROM. By default, the .SRM is saved to SMILE RF\Files\Temp\

Check Unsaved Changes: making edits in the level editor or map editor, then attempting to load a different room will stop you with a pop-up that asks you if you want to save your edits first.

Show Current Room Size: displays and updates the level usage / maximum numbers in the level editor's window title as you edit, instead of only showing up when you save the room.

Auto Focus Windows: bring SMILE RF's other editor windows into focus by simply hovering your mouse cursor anywhere over them, instead of having to click on them.

Always On Top: SMILE RF's windows won't be hidden behind any other programs that you unminimize (restore) or bring into focus.

Auto Save Settings: keeps all of SMILE RF's settings saved for you. Might as well keep this checked, yeah?

Check Updates: any time SMILE RF is opened, it'll check for an update (unless you're using the offline version). If one is found, you'll get a pop-up window that tells you a new version is available, the version number, and an OK / Cancel option to download the new version. To be on the safe side, make a backup copy of your whole SMILE RF folder before you update, in case there are any new bugs or crashes that render the program unuseable.

4.

"Windows" menu. Hides and unhides the various main editor windows.

Level Editor: main editing window for rooms, explained throughout part 2.

Tile Table: available area tiles for use within the level editor.

Map Editor: area maps and room placement.

FX Editor: fog, water, lava, palette blends and other cool stuff.

Tileset Editor: create new tiles to use in the level editor.

Palette Editor: change any of the game's colors (see palette locations).

5.

"?" menu.

About SMILE RF: tells you the current program version and gives a few resource links.

Report Bugs / Feedback: pulls up a simple form that allows you to directly send information to Scyzer if you run into problems with SMILE RF, or have any suggestions on how to improve it. You may need to make SMILE RF an exception to your firewall for this feature to work.

Reset Alert Messages: if you've checked "don't show this again" for any of SMILE RF's warning pop-ups, this will undo that.

Task Log: keeps a history of ROMs opened, room saves, etc. Also displays certain data (such as door or item PLM index searches).

6.

Room list. Click a room ID from this drop-down menu to load any of the game's rooms for editing. Careful not to lose unsaved edits by opening another room! Hotkeys: up and down arrow keys (will only work after clicking on the menu to bring it into focus). Hotkey for neighboring rooms: Ctrl+E (will only work while your mouse cursor sits on a door's BTS tile, which are always located directly behind the blue shootable part).

NOTE: if the color of the room list & room state list changes to red after attempting to open a room, this indicates either a corrupted room header for that particular room in bank $8F, or an unknown state that hasn't been added to the mdb_state.txt text file (located in folder: SMILE RF\Files\Data\). This shouldn't happen unless you're making hex edits that affect the room header.

7.

Room state list. If this drop-down menu is gray, you can just ignore it. If it's bright green like the room list, then you need to be aware that the room has an alternate state, which will activate after a certain event. A room state is just an alternate set room pointers that activate after certain conditions are met (related: event value list).

Careful not to let room states confuse you into thinking that your level edits aren't working! QuickMetting with a different room state active than the one you've had selected while editing could cause this. An example would be editing the landing site (room 791F8) with the "E5E6 = Standard 1" state selected, but having power bombs given to you when you use QuickMet test the room, which would cause the room to be previewed with its "E669 = Power Bombs 1" state activated instead of Standard.

Room states are responsible for the space pirates that appear after Samus collects the morph ball, and Wrecked Ship 'switching on' after Phantoon is beaten, and so on. They are a terribly neglected feature in the original game that clever hackers will find a million new uses for.

8.

Main window buttons. Click these and you'll be given a different set of options that let you edit other parts of the ROM (currently you're seeing the contents of the "Tiles & BTS" tab, but "Room MDB" and "ROM Stuff" are explained next).

Tiles & BTS: use graphic sheets and block types (solid, air, shot, bomb, etc.) to build rooms.

Room MDB: room setup. Decide how large a room can be and how many doors it should have, for example.

ROM Stuff: index scan, data watch, SMILE RF debug options.

9.

Currently selected tile in the Level Editor window. Right-clicking on any tile in the level editor will show you its tile type and tile name in this little area, which can then be changed by using the tiny scroller to choose another tile type. This is the most basic way to make blocks that Samus can destroy, hidden passages, and a bunch of other stuff.

10.

Tileset & CRE drop-down menus. Choose which tileset or CRE the currently opened room will use. Any room can use any tileset with enough work.

NOTE: changing tilesets for a room that's already built will make the room look horribly glitchy (don't worry, you can change it right back to what it was). This glitchiness is totally normal, and it happens because none of the tile tables are organized exactly the same between tilesets. Basically, that means there's no easy way to change a finished room's tileset without erasing and remaking it.

11.

X Flip, Y Flip and X/Y Flip checkboxes. These will mark all tiles in a room that have been flipped by putting a yellow outline around them. Checking X Flip will show you tiles that have been flipped horizontally. Y Flip is for tiles that are flipped vertically, and X/Y will only show tiles that are flipped both horiztonally AND vertically. The purpose of this feature is to be able to see and easily get rid of unneeded flips, such as invisible air tiles or solid rock, which can waste level data.

12.

Checkbox for highlighting selected tile. Similar to X, Y and X/Y above. While checked, the last tile type you right-clicked on in the level editor will be marked with a red outline. Right-click a different tile type to mark those instead.

13.

Drag BTS number to tile. That small metroid icon can be dragged and dropped onto any tile in the level editor window, which applies any BTS number you've typed into the box (00 by default) to that tile. Tiles with a BTS of 00 won't display its number (or else every tile would have a red 00 over it), but tiles with a BTS number of 01+ will display their number. Hotkey: set your mouse cursor on a tile in the level editor and type the desired BTS number.

14.

Quick BTS boxes. These two dark gray boxes are spots that any of the slopes from #14 or extra BTS types from #18 can be dragged and dropped onto. Doing this allows you to instantly assign that block type to any tile in the level editor window by setting your cursor on it and pressing F11 (left gray box) or F12 (right gray box).

15.

Green slope BTS table. These can be dragged and dropped over any tile in the level editor window. Slopes are what allow Samus to run up or down hills. Another use is making the solid area of a tile smaller than what the graphic itself shows. See slopes for more.

16.

Flip slope BTS. Checking either or both of the checkboxes will flip the green slope BTS table, allowing you to then drag and drop the flipped versions over a tile in the level editor.

17.

Set Slope. Must be checked for green slopes to be dragged and dropped properly. If unchecked, only the BTS number of the slope will be carried over.

18.

Yellow slopes. These aren't used in the original game at all, and they're just an exact copy of the green slopes. Keep this box unchecked unless you intend to program custom behavior for them that differs from green.

19.

Extra BTS types. These can dragged and dropped onto any tile in the level editor window, just like the green slopes from #14. If the "Returning" checkbox is checked, then the block will reappear after a few seconds if Samus destroys it. See BTS reference for more info.

20.

Scrolling speed of the room's background. The slider for X determines how quickly the background will move left and right as Samus moves, and Y is for up and down. If both sliders are set to 100%, the background will move at exactly the same speed as the foreground whenever the camera scrolls. At 0%, the background will barely move at all.

21.

Add or delete Layer 2. Creates a second room layer that can be toggled for editing by pressing the F1 key. Adding a second layer to a room that doesn't have one will cover the background with yellow power bomb door graphics (picture). This is totally normal. Just press F1 and erase all of the power bomb tiles using a blank air tile. If a room uses layer 2 by default and you want to delete it, you'll need to give it a working "Background" pointer (see backgrounds).

22.

Use Layer 2 or BG Data pointer. Layer 2 means that the background will be loaded as part of the room's level data (F1 key toggles editing). BG Data means that the room's background is being loaded from its own place in the ROM, which isn't linked with any of the game's rooms. BG Data can be used to save space if you plan on using the same exact background for several rooms (the original game uses BG Data for most rooms), although most people prefer to use layer 2 backgrounds (see backgrounds).

23.

Edit BG data. Opens up the BG Data Editor. This button only becomes clickable once the BG Data checkbox (#20) is checked. CAUTION: editing the background this way means that your edits will affect all other rooms that have the same Background pointer.

24.

Flip clipboard selection. Any time you right-click on a single tile in the level editor (or right-click + drag to select multiple), you'll see a preview of it in the clipboard section (#26). The X and Y Flip checkboxes allow you vertically or horizontally flip what you've selected, ranging from a single tile, all the way up to an entire screen (16x16 tiles).

25.

Graphic or BTS only. Lets you switch between placing only a block's graphics, or placing only a block's attributes down when you left-click in the level editor window. Very useful feature that can speed up the room building process.

26.

Save and load clipboard. Saves your current clipboard selection (whatever you see in the preview at #26) as a .CLP file, which can be loaded at any time in any room that uses the same tileset.

27.

Clipboard preview. Right-click once on a single tile in the level editor window, or right-click + hold down the click and drag the mouse to select a range of tiles, and you'll see a preview of it appear right here as soon as right-click is released. Whatever you see in this preview spot is what will be placed in the room next time you left-click.

Feature: clicking on tiles in the clipboard preview will exclude them from being placed in the level editor with the other tiles when you left-click (indicated by being changed into a red squares). Awesome.

1.

Room index. By default, this is just the room's number for its area, and it doesn't actually do anything. Its only known use is switching the graphical effects for Samus's footsteps on or off (these effects include water splashing around Samus's feet in wet Crateria/Maridia rooms as she walks, and small puffs of dust that appear after Samus lands from a jump or fall in most Norfair rooms). You might have to play around with different values until you find ones that work.

2.

Special GFX Flag. Instructions for graphic sets that are executed during door transitions. 00 = default (do nothing), 01 = black out everything during room transition (used for bosses), 02 = reload CRE, 05 = disable CRE.

3.

Area. Lets you change which area that the room you have open will be in. If you change a room's area, then you will also most likely have to edit the map to get it correctly repositioned.

4.

Room's Width and Height. If you edit these values, then save the room, new screens will be added to or subtracted from the room. You'll likely need to repoint Room Scrolls (#10) after you change a room's size. If changing the room's new size would have resulted in its level data going over the limit, the room won't save, and you'll be given a pop-up notice (you can still force it to save, but forcing a room save under these conditions will just overwrite another room's level data, which crashes them ingame and garbles them up in SMILE).

5.

X and Y values. This the room's position on the map (in the map editor, these X and Y values are represented by the white box that can be moved around by pressing and/or holding the M key). The white boxes are allowed to overlap with the white boxes of other rooms.

6.

Up and Down scrollers. Pushes the camera a bit further up or down by default when Samus is moving. Very useful in certain situations, because better visibility is given to what's above or below Samus. The original Super Metroid uses an Up scroller value of 90 instead of 70 in certain grapple rooms, which makes the grapple blocks harder for the camera to push off-screen. More info here.

7.

Room State. Choose which event value will trigger a different state for this particular room. See events.

NOTE: if any of the pointer fields below (#8-18) appear red instead of mint green, it's because of invalid ($0001-$7FFF) or incomplete pointer data. Attempting to save the room while a pointer field is red will give you a warning pop-up.

8.

Level Data pointer & level_entries.txt button. Unlike the pointers below, which run pieces of code located in banks $8F, $83 or $B4, level data can be loaded from anywhere in the ROM. In the screenshot, it's pointing to the address $C2:C2BB (PC: 2142BB), which is bank $C2. The small white button to the right of "Level Data" will open the level_entries.txt file (folder: SMILE RF\Files\Data\) in your default text editor. See Level Data pointer.

9.

Background pointer. This pointer loads a single-screen tilemap to use as the background for this room. If a room is using a Background pointer, its background will appear solid black in the level editor, and it won't be editable after hiding layer 1 (the white square of your currently selected tile will appear frozen in place until you unhide layer 1). Changing this pointer to 0000 will disable the Background pointer, which means the room must instead use a layer 2 background. Layer 2 backgrounds are simply added to the room's level data. Called "BG_Data" in older SMILE versions. See Background pointer.

10.

Room Scrolls pointer. Points to the scroll values for each screen of the room in bank $8F, which are marked as either red (00), green (02) or blue (01) in SMILE RF (toggle viewing them on/off in the level editor with the F4 key). Using 0000 as the pointer = all scrolls blue, and 0001 = all scrolls green. See Room Scrolls pointer.

11.

Doors pointer. Points to a set of pointers in bank $8F, which point to the data for each of the room's doors in bank $83. $0000 is not a valid value because each room must have at least one door. Called "Door_Out" in older SMILE versions. See Doors pointer.

12.

Setup ASM pointer. This is optional extra code in bank $8F that runs once as the room is first loading/loaded. Used for Crateria's scrolling sky background, and to automatically give Tourian's map to Samus. Called "Layer1_2" in older SMILE versions.

13.

Main ASM pointer. This is optional extra code in bank $8F that runs constantly after the room is loaded. Called "FX2" in older SMILE versions.

14.

FX / Layer 3 pointer. This points to a 16-byte string in bank $83, which are all of that room's effect settings (these bytes are all edited using the FX Editor; also see FX editing). Called "FX1" in older SMILE versions.

15.

Unused pointer. Nothing reads this at all, and it's not stored anywhere in the RAM. Text field color will always appear mint green.

16.

PLM Set pointer. Points to all of this room's PLMs, which are located in bank $8F. Each PLM uses 6 bytes that determine its X/Y placement in the room, along with its Main PLM Variable values, plus a required instance of "00 00" at the end of the string. See PLM Set pointer.

17.

Enemy Set pointer. Points to a set of 16-byte strings in bank $A1. The number of enemies in the room is how many of these 16-byte strings will be found at this pointer, until ending with a required instance of "FF FF". The data in these 16-byte strings contains all of the settings for that particular enemy that have been made through the enemy editor's Enemy Selector and Enemy Data areas. Called "Enemy Pop" (population) in older SMILE versions. See Enemy Set pointer

18.

Enemy GFX pointer. Points to a string of data that's 6-18 bytes long in bank $B4, which make up the contents of the Room Enemies list. Each enemy in the Room Enemies list is 4 bytes (2 bytes for the enemy ID entry, and 2 bytes for the palette entry next to it), with a required instance of "FF FF" at the end. You will need to repoint the Enemy GFX if you want to add more entries to the list than what the room has by default. Maximum of four different entries. Called "Enemy Set" in older SMILE versions. See Enemy GFX pointer.

19.

LoROM address to PC address converter. Converts between LoROM addresses and PC addresses. Must fill in with 0 if entering a PC address that's less than 6 characters long (example: 07E9A0 instead of 7E9A0, or 001800 instead of 1800). An alternative to this is Lunar Address, which does the same thing, but exists as its own program/window.

20.

Save pointers with or without overwriting data. If checked, will change the pointers, then save the room using the new pointers so that all of the room, enemies, PLMS, doors, and everything gets saved to the new location. If unchecked, it'll change the pointers, then read the data at those locations instead before saving the room. If you're not sure which one to use, try as unchecked first.

21.

Enemy / PLM sliders. the number of enemies or PLMs that the room will have can be set here. Don't change these without repointing PLM Set (#16) and Enemy set (#17) first.

22.

Music for this room.

Song Set: main song to use. See song list.

Play Index: version or "type" of main song to use. Usually set to 00, 05 or 06.

1.

Data Watcher. Watches chunks of ROM data for changes. Useful for ASM programmers who suspect that code is being written somewhere that it shouldn't be.

2.

PLM Index Tools. Lets you scan the ROM for unwanted instances of two items or two doors sharing the same Main PLM Variable (see PLM editor). If you wanted to make sure two doors weren't sharing a Main PLM Variable of $0010, you'd enter "$010" (as pictured), check the "Door" checkbox, and click the "Find Index" button. After that, go to "? > Task Log" to see if the index was found in more than one room (here's another picture). Clicking the "Show All Indexes" button will generate "[ROM-FILENAME]_Door Index.txt" or "[ROM-FILENAME]_Item Index.txt" in the same folder as the Super Metroid ROM that you currently have open in RF, depending which checkbox is checked. This means if you were to open "Super_Metroid_supzer.SMC" from My Documents and click Show All Indexes, you'd be creating "Super_Metroid_supzer_Door Index.txt" or "Super_Metroid_supzer_Item Index.txt" in My Documents. The .TXT files themselves list every single item/door index and their corresponding rooms.

3.

MDB Tools. The "Search MDB Entries" button creates a text file called "[ROM-FILENAME]_MDB.txt" in the same folder as the Super Metroid ROM that you currently have open in RF, which is a list of all working room headers. "Export Room Details" button creates "[ROM-FILENAME]_Room_Details.txt" with all pointers used by all rooms in the game.

The Append and New checkboxes are only used by the Search MDB Entries button. "Append" searches the ROM, and any rooms that are found are added to the current MDB list (even though the current one may contain rooms that aren't in the ROM). "New" will generate a new MDB list of only the rooms that it found from searching the ROM.

4.

ROM Data. Export / Import chunks of ROM data as .BIN files. Exported files appear in the same folder as the Super Metroid ROM that you currently have open in RF, as "[ROM-FILENAME] Data $XXXXXX (Size $YYYY).bin" with X and Y being whatever values you entered into the Address and Size fields. Use LoROM addresses only, not PC addresses. The size can be between $0000-FFFF.

5.

Debug Stuff. Click on the ROM Stuff tab, and then slowly type "RFDEBUG" and press enter. Doing this will cause the "Debug Stuff" options to appear directly underneath "ROM Data". The debug menu is not shown in the screenshot because its contents will probably change often, and the debug features themselves could be risky to use. Make a back-up of your ROM before you mess with anything in the SMILE RF debug menu!

1.

Previous door ID. When you use the the Ctrl+E hotkey to "travel through" a door, its location in bank $83 will appear in this box.

2.

Plus (+) button. Copies the value in the previous door ID value box (#1) over to the nearby drop-down menu (#3).

3.

Door ID that sets new FX pointer. Seen in some spots in Norfair with rising lava/acid. This pointer will override the room's default FX pointer that's usually edited in the Room MDB tab, but only after Samus goes through a certain door, or doors. See door-specific FX.

4.

Minus (--) button. Removes entries from the same drop-down menu that clicking the plus button adds to.

5.

FX type. Type of room effect to load; water, lava, fog, etc. If the room did not have any effects by default, make certain that it has its own 16-byte pointer somewhere in bank $83, and that it isn't sharing the same FX pointer with other rooms. If the drop-down menu (#3) changes changes to $FFFF for a room, that means a FX pointer must be given before you can edit the effects for that room.

6.

Palette blend. Palette blends are great. With palette blends, water, lava, fog and anything else that uses layer 3 can be any color you want. The original game doesn't use them very often. See palette blends.

7.

Liquid Options. Sets all of the basic behaviors of the room's water, lava or acid.

$FFFF(1) Liquid Height --> $FFFF(2): $FFFF(1) is the starting height of a room's water/lava/acid. This is the value that you'd edit for just setting a liquid height that you don't intend to change (hotkey: hold Shift while the level editor window is in focus and look at the orange bars that appear on the left/right side; clicking will set a new height). $FFFF(2) only needs to be edited when making liquids rise or lower to a different height after Samus has entered the room.

$0000 Speed: vertical speed of liquids.

For making liquids rise, use a Speed value between $FFFF (slowest) and $8000 (fastest). Test $FFF0 first, then try $FFE0, $FFD0, $FFC0, etc. The Liquid Height value at $FFFF(1) must be HIGHER than the second value at $FFFF(2). Example: $0200 Liquid Height --> $0100

For making liquids lower, use a Speed value between $0000 (slowest) and $7FFF (fastest). Test $0010 first, then try $0020, $0030, $0040, etc. The Liquid Height value at $FFFF(1) must be LOWER than the second value at $FFFF(2). Example: $0100 Liquid Height --> $0200

Delay $00: how long until the room's liquid starts to rise or lower. Use a value between 01-FF. If you use 00, it'll never start.

Flowing Left: makes a room's water appear to have a slow current moving left. Doesn't work for lava or acid.

BG Heat FX: animates the background for heated and underwater rooms.

To make a background animate like it's heated, select Acid or Lava as the FX Type, then use FFFF and FFFF as the Liquid Height values (if the room is in Norfair and you don't want heat damage to Samus, make sure Palette Options Unknown #1 is unchecked). Check either BG Animate (heatwave effect #1) or BG Liquid (heatwave effect #2, unused in Super Metroid). Small Tide and Large Tide should always both be unchecked if you're using FFFF and FFFF for the Liquid Height values, or you'll get water/lava/acid appearing over everything and disappearing every few seconds (caused by small/large tides making liquids vertically wrap from the very bottom, to the very top of the room).

To make the background animate if it's underwater, check BG Animate.

BG Liquid: makes water behave like air (works alongside BG Animate). Doesn't seem to do anything for lava/acid.

Liquid Options Unused #1:

Liquid Options Unused #2:

Liquid Options Unused #3:

Large Tide or Small Tide: makes water/lava/acid slowly move up and down. If Large and Small are both checked, Small will take priority.

8.

FX Transparency menu #1 (FX bit A). Some of the descriptions for entries in this drop-down menu are too long to see. To read them in full (and edit them if you wish), look at the text file: SMILE RF\Files\Data\fx1_entries.txt

This menu has options that mainly affect the room's lighting. 02 is the most commonly used value, with 28 and 2A sometimes being used for rooms that are supposed to look darker.

9.

FX Transparency menu #2 (FX bit B). Some of the descriptions for entries in this drop-down menu are too long to see. To read them in full (and edit them if you wish), look at the text file: SMILE RF\Files\Data\fx1_entries.txt

This menu has options that mainly affect how the FX layer will interact with other room layers. 18 and 14 are good choices. 18 = layer 3 drawn over everything. 14 = layer 3 drawn over everything (except enemies), with palette blends that subtract (darken) layer 3 instead of add (brighten); Maridia uses 14 in all of its rooms to darken its water. 02 is usually used as the default for rooms with no layer 3 effects.

10.

Animated tiles (FX bit C). These options are area-dependent.

Spikes (H): if checked, spikes on the ceiling and floor will animate.

Spikes (V): if checked, spikes on walls will animate.

Ocean: this checkbox's name changes, depending on which area the room you have open is in. For Crateria it's Ocean, for Maridia it's Sand Source, etc.

Lava: this checkbox's name changes, depending on which area the room you have open on is in. For Crateria it's Lava, for Maridia it's Sand Fall, etc.

Animated Tiles Unused #1:

Animated Tiles Unused #2:

Animated Tiles Unused #3:

Animated Tiles Unused #4:

11.

Palette Options (FX bit C). These options are area-dependent. The 'unknown' values aren't actually unknown; they're called that because they affect certain color ranges for many tileset palettes, and so they can't really be given short, easy-to-understand names. These checkboxes are what activate certain palette shift loops throughout the game (such as Norfair's heated glows). Not all areas have the same amount of palette shifts set up to use.

Palette Options Unknown #1: used.

Palette Options Unknown #2: used.

Palette Options Unknown #3: used.

Palette Options Unknown #4: used.

Palette Options Unknown #5: used.

Palette Options Unknown #6: unused.

Palette Options Unknown #7: unused.

Palette Options Unknown #8: unused.

12.

Save FX Data or Reload FX Data. Saves the edits you've made in the FX Editor to the ROM. Reload will undo all of your edits, unless you've already clicked Save FX Data, in which case it will undo all of the edits you made after that point.

▲ ∧ Enemy Editor ∨ Right-click on an enemy in the level editor to open the enemy editor. The "Enemy Selector" and "Enemy Data" areas (#1-11) affect only the individual enemy that you right-clicked on. The "Enemy Header AI", "Main AI Pointers" and "Enemy Graphics" areas (#15-27, #31-42) affect every instance of that enemy in the game.

1.

Picture of selected enemy. This graphic isn't read directly from the ROM like #25 is, but is a .GIF file that can be found at SMILE RF\Files\Enemies\CEBF.gif.

2.

Enemy list. Lets you browse enemies to replace the one that you right-clicked on to bring up the enemy editor. You can double-click on an entry to add it to the Room Enemies list (#27), but only after you've repointed the Enemy Set, or after removing an entry from the list so that the number of entries never goes above what it originally was.

3.

Enemy ID. Can be used instead of the enemy list for choosing an enemy to replace the one you right-clicked. If you've memorized an enemy's ID, typing it here loads that enemy up and saves you the trouble of having to navigate the tiny scrolling enemy list.

4.

"Use As Default" checkbox and Save/Cancel buttons. The Use As Default checkbox allows the selected enemy to appear when a new one is added to the room with SMILE RF's "PLM / Enemies" checkbox, instead of the knight placeholder. Clicking Save/Cancel will close the enemy editor.

5.

Special [$0F86, X]. you usually won't need to edit this since it automatically changes to what it needs to be, based which checkboxes (#6) are currently checked.

6.

Enemy data checkboxes. These only affect the enemy in the room that you right-clicked on to bring up the enemy editor.

Invisible: makes the enemy invisible. Probably doesn't work for all enemies.

Move Off-Screen: allows the enemy's AI to run, no matter how away from Samus it is. Don't use this on too many enemies, or it can cause the room to lag.

Platform: allows Samus to stand on top of the enemy without being harmed. Doesn't work right for most enemies that weren't intended to be used as platforms.

Non-Responsive: makes the enemy unable to harm Samus, and unable to be harmed by Samus.

Respawn: the enemy will blink back into existence in the spot it's placed at in the room after Samus kills it.

Block Plasma: makes plasma beam disappear after damaging the enemy instead of passing through it.

7.

Graphics [$0F88, X]. You shouldn't need to ever edit this. Used by gate enemy, and can be set to $FFFF for them. For enemies that need to have the Extended Tilemap Format checkbox (#8) checked, the correct value will automatically be placed in this field.

8.

"Disable Movement / Animations" and "Extended Tilemap Format" checkboxes.

Disable Movement / Animations: stops the enemy from processing its tilemap code. You shouldn't ever need to use this.

Extended Tilemap Format: only needs to be checked for certain enemies with more complex animations, such as space pirates.

9.

Tilemaps [$0F92, X]. This is the address that's being used as a pointer to the enemy's starting tilemap/instruction. Called "Orientation" in older SMILE versions.

10.

Speed [$0FB4, X]. See enemy info (#12). If no info is provided, assume that $0000 should be used.

11.

Speed 2 [$0FB6, X]. See enemy info (#12). If no info is provided, assume that $0000 should be used.

12.

Enemy Info. These are the basic instructions for setting up the enemy. You can edit this info yourself if you need to and save the changes. If this area reads [NO INFO FILE FOUND], then you likely only need to set the enemy's values for fields #5, #7, #9, #10, and #11 to these: Special = $2000, Graphics = $0000, Tilemaps = $0000, Speed = $0000, and Speed 2 = $0000.

13.

Save Enemy Info & Reload Enemy Info. If you choose to edit the text that's in the Enemy Info box, saving it will overwrite a .TXT file located in SMILE RF\Files\Enemies\ for that enemy (CEBF.txt in this screenshot).

14.

Open enemy .TXT file. Some enemies have more detailed info .TXT files that can't all be shown at once in SMILE RF's Enemy Info area. Clicking this button opens the .TXT file using your default text editor.

15.

AI Bank. This is the bank that the selected enemy's AI is located in. You shouldn't ever need to edit this value.

16.

Beta name for enemy. These have no effect on the enemy behavior, so there's no reason to edit these. See beta enemy names.

17.

Basic enemy attributes. For these changes to take effect, you'll have to click "Save DNA" (#26) before clicking the Save button (#4).

Energy: how much health the enemy has.

Damage: how much damage Samus will take from touching the enemy. This doesn't include the damage for enemy projectiles, which will need to be edited separately.

Sound: this is only the hurt sound to play when the enemy takes damage. For sounds that enemies make while they're attacking or moving around, see hex editing > sound effects.

Death: type of animation to play when the enemy is killed. 0000 = small, round explosion (most enemies have this), 0001 = killed by screw attack, 0002 = large, round explosion, 0003 = series of small explosions, 0004 = series of large explosions.

Width: enemy's horizontal hitbox size in pixels, starting from the center of the enemy.

Height: enemy's vertical hitbox size in pixels, starting from the center of the enemy.

18.

Layer priority. Determines which layers the enemy will appear behind or in front of. 00 = very front, 02 = in front of Samus, 05 = between Samus and background, 0B = behind all.

19.

Hurt flash. How long for an enemy to continuously flash white after taking damage from Samus. Interestingly, hurt flash also serves as a "flinch duration" for most enemies by freezing them in place if slightly higher values like 10 are used.

20.

Main AI pointers. You shouldn't edit any of these values unless you know what's going to happen, or you know how to safely test and undo new changes. Click "Save DNA" (#26) to save any changes made. Remember that these pointers will affect the main enemy AI itself! This means that if you give enemy CEBF (Boyon) a new shot AI, it will affect every Boyon in the game.

To visit these spots with a hex editor, look at the AI Bank (#15) and stick that value in front of the Main AI Pointers below. Example from screenshot: Initiation AI is 871C, and the AI Bank is $A2, so this gives us a LoROM address of $A2:871C, which converts to PC address / hex editor offset 11071C.

Initiation AI: this pointer is to the very beginning of an enemy's AI. Initiation AI sets up the enemy. It runs once per enemy as the room is loading, then never again unless Samus re-enters the room.

Main AI: this pointer is to the starting point of the enemy's main active/running AI. Main AI only runs while the enemy is visible on-screen. If the Move Off-Screen checkbox is checked, then that enemy's Main AI will always be running until Samus leaves the room or kills the enemy.

Shot AI: pointer to code to run when the enemy is shot by Samus, usually set to 802D. Common values: 802D = normal hit to enemy. 804C = no effect.

Hurt AI: pointer to code to run when the enemy receives damage, almost always 804C. Only different for a few bosses and enemies.

Touch AI: pointer to code to run when Samus touches the enemy, usually set to 8023. Common values: 8023 = normal harm to Samus. 804C = no effect. 8E6B = normal harm to Samus + enemy self-destructs.

PB (power bomb) AI: pointer to code to run when Samus sets off a power bomb while the enemy's Main AI is running, usually set to 0000.

Grapple AI: pointer to code to run when Samus's grappling beam touches the enemy. Common values: 800A = grapples onto enemy + kills enemy. 800F = grapple is stopped and has no effect on the enemy. 8005 = grapples onto enemy and freezes it in place. 8000 = grapple passes harmlessly through enemy. 8014 = grapples onto enemy without freezing it in place. 8019 = similar to 800A, but slightly longer grapple duration.

X-Ray AI: pointer to code to run when X-Ray is used while the enemy's Main AI is active.

Frozen AI: pointer to code to run when frozen.

Boss Value: used by bosses to disable the map, disable footstep sound effects, and change certain tiles on the map to pink / explored.

NOTE: Any "Shot AI", "Touch AI", "Grapple AI", "X-ray AI" or "Frozen AI" pointer higher than 8767 is enemy-specific, meaning that it will almost always crash the game if used by the wrong type of enemy.

21.

Extra AI, X. These extra AI pointers aren't used at all in the original Super Metroid, but custom enemies can be coded to use of them. The values below ($####, X) are for how far into the $40 bytes of enemy DNA that the extra AI pointer is located. This means that if you started counting in hex from the beginning of the enemy's DNA data, the "$0016, X" pointer would be located $16 bytes in, "$0024, X" is $24 bytes in, etc.

$0016, X:

$0024, X:

$0026, X:

$002A, X:

$002C, X:

$002E, X:

$0034, X:

22.

Enemy graphics pointer. LoROM address location of the enemy's graphics. The graphics at this location are also previewed for you in the little window below (#25).

23.

GFX size. How many bytes of data to use for this enemy's graphics, starting from the Enemy Graphics Pointer.

24.

Possessors. Usually is the number of pieces required to make up one fully functioning enemy of this species. Pieces means that multiple copies of the same enemy are needed to complete the whole and make it work properly. The Shaktool that destroys the wall and grants you access to Spring Ball is made up of 7 enemies, for example. Exceptions to this are enemies such as Kago, which has 0009 as its possessors value, but only needs one enemy piece to function fully.

25.

Enemy graphics preview. The enemy graphics here are previewed directly from the ROM, just like tilesets.

26.

Save and reload enemy DNA buttons. "Save DNA" saves any changes made to the fields under the "Enemy Header AI", "Main AI Pointers" and "Enemy Graphics" sections above. "Load DNA" undoes any field edits you've made since opening the enemy editor, or last clicking Save DNA.

27.

Copy and paste enemy DNA. You should only be using these Copy/Paste buttons if you plan to overwrite an enemy with another. See enemy header copying.

28.

Room Enemies list. This was called the "Enemies Allowed list" in older SMILE versions. Maximum of 4 entries. Right-click on an entry to see a preview of it (#1, #25).

Header: double-clicking an enemy ID removes it from the header list. Double-clicking an enemy ID in the Enemy Selector (#2) adds it to the header list. Entries can be dragged + dropped to change the order.

Palette: shouldn't use any other values besides $0001, $0002, $0003 or $0007. Enemies are allowed to share the same value.

29.

Allowed pointer. This is just a mirror of the room's Enemy GFX pointer (Room MDB tab, #18) within SMILE, so editing one will directly affect the other.

30.

Enemies to clear room. Number of enemies that Samus must kill before gray doors will start flashing.

NOTE: opening a flashing gray door will trigger the "Zebes is awake" event.

31.

Enemy palette pointer. Points to a spot somewhere in the enemy's AI Bank (#15) that contains the enemy's palette, which is always 32 bytes long. In the screenshot, the enemy's palette pointer is 8687, and the AI Bank is $A2, giving us the LoROM address $A2:8687, which is where enemy CEBF's palette is stored.

32.

Enemy palette. To edit an enemy's colors, click on a color and adjust the red/green/blue sliders (#33).

33.

RGB (red/green/blue) sliders. The red/green/blue squares with the numbers in them are actually draggable, which lets you copy the current color over another. The sliders themselves function just like the other palette editors in SMILE.

34.

Save, import, or export palette. "Save Palette" instantly saves any changes you've made to the enemy's palette with the RGB sliders. "Import Palette" allows you to load another enemy's palette that you've exported. "Export Palette" creates a palette file in the same folder as the Super Metroid ROM that you currently have open in SMILE, with a filename of the enemy ID you're editing (clicking it in the screenshot would create CEBF.tpl).

35.

Enemy weakness pointer. Points to a 22-byte string somewhere in bank $B4, which is made up of all the Damage Multiplier values for each of Samus's weapons for that particular enemy. This location is $B4 + Weakness Pointer. In this screenshot, the Weakness Pointer is EDA8, which means $B4:EDA8 (PC: 1A6DA8) is where you'd find the Damage Multiplier values for enemy CEBF if you were looking for them in a hex editor.

36.

Save enemy weaknesses. Saves your enemy weakness edits, which use 22 bytes in bank $B4.

37.

Weapon Type drop-down menu. Selecting a beam from this drop-down menu lets you edit that particular beam's Damage Multiplier (#38) and Freeze/Kill checkboxes (#39) for the enemy. If you make an edit, you'll need to click "Save Weakness" (#36) before picking another weapon from the drop-down menu, or your edit will be undone.

38.

Damage multiplier for currently selected weapon type. Can use a value between 0-F.

0 = no damage to enemy.

1 = 0.5x damage to enemy.

2 = default (1x) damage to enemy.

3 = 1.5x damage to enemy.

4 = 2x damage to enemy.

5 = 2.5x damage to enemy.

4-F = higher damage to enemy.

39.

Freeze/Kill checkboxes. "Freeze, Don't Kill" will make the enemy always freeze in one shot no matter how much energy it has left, and not actually take any damage. "Kill, Don't Freeze" will make the enemy die normally once its energy reaches 0, instead of freezing at near-death. These only work with ice beam, or beam combinations with ice in them. These checkboxes change the high bit of the damage value for enemies.

40.

Drops pointer. Points to a 6-byte string somewhere in bank $B4, which is made up of the 6 values below at #42. This location is $B4 + Drops Pointer. In this screenshot, the drops pointer is F320, giving us $B4:F320 (PC: 1A7320). Going there with a hex editor, you'd see 14 0A 55 82 05 05, all of which are seen in the screenshot. From left to right: small energy, large energy, missile, nothing, super missile, power bomb.

41.

Save drops. Saves the changes you've made to any of the 6 fields below (#42) by writing to the location pointed to by the Drops Pointer (#40).

42.

Drop chances. How often the enemy will drop a certain type of ammunition or energy after it dies. Be sure to test these out thoroughly if you edit them. To be on the safe side, keep the total of these 6 values to exactly FF; use a hex calculator if you need to (from the screenshot: 14 + 0A + 55 + 05 + 05 + 82 = FF).

▲ ∧ PLM Editor ∨ Right-click on any PLM in the level editor to open the PLM editor.

1.

PLM preview. All of the PLM previews are shown here are .GIF images (located in SMILE RF\Files\PLM\), and aren't read directly from the ROM.

2.

PLM Selector list. Use the scrollers (or the up & down arrow keys after you've clicked on an entry) to browse PLM IDs. Clicking "Save PLM" (#4) after clicking on a different PLM ID entry will replace the PLM that you right-clicked on to bring up the PLM editor.

3.

Currently selected PLM ID. If you've memorized a PLM ID, you can type it here to load it right away instead of using the PLM Selector (#2) to browse.

4.

"Use As Default" checkbox and Save/Cancel buttons. The Use As Default checkbox allows the selected PLM to appear when a new one is added to the room with SMILE RF's "PLM / Enemies" checkbox, instead of the red question mark placeholder. Clicking Save/Cancel will close the PLM editor.

5.

PLM Info. The PLM information seen in this screenshot is being read from a text file (found in SMILE RF\Files\PLM\B63B.txt) that you can edit/save. All PLM IDs have their own text file like this.

6.

Save / Reload PLM Info. "Save PLM Info" overwrites the selected PLM ID's text file (found in SMILE RF\Files\PLM\) with whatever edits you've made. "Load PLM Info" undoes any info changes you've made since opening the PLM editor, or last clicking on Save PLM Info.

7.

Open PLM info .TXT file. Opens the currently selected PLM's .TXT info file using your default text editor.

8.

Main PLM variable. In older versions of SMILE, this value was broken into two drop-down menus called High and Low. The main PLM variable is what makes that particular PLM unique (e.g., each item needs its own unique Main PLM variable value, and so does each shootable door cap that isn't blue).

9.

PLM type. Depending on which entry is selected in the PLM Selector (#2), the name and contents of this editing area will change between "Standard PLM", "Save Station PLM", "Scroll PLM", "Door PLM", "Expansion PLM", or "Upgrade PLM".

10.

PLM Offset. Offsets the default positioning of a PLM type's preview .GIF image in the level editor. You should never need to edit this value unless you're adding in completely new PLM types. This value is a SMILE RF setting that doesn't make any changes to your ROM.

11.

Edit PLM Scroll Data button. Change room scrolls when this PLM is touched. Clicking this will open a small editor that looks like the scroll editor and works almost the same way, except that it edits the inner color of each screen instead. These inner colors are the screens that are affected by touching the scroll PLM that you right-clicked on to bring up the PLM editor. See scroll PLMs.

12.

Door strength value. How many hits to open door. Changing this value will affect every door of that type (example: making a left-facing red door take 1 missile to open instead of 5 will affect all left-facing red doors in the game).

13.

Expansion value. How much each item is worth. $0005 for 5 missiles, super missiles or power bombs, and $0064 for 100 units of energy for energy/reserve tanks.

14.

Item bitflag. Values can be combined by adding them together (example: to make an item give you both Hi-Jump Boots ($0100) and Spring Ball ($0002), you would add their values together, which would be $0100 + $0002 = $0102

List of equipment & beam bitflags:

$0001 = Varia

$0002 = Spring Ball

$0004 = Morph Ball

$0008 = Screw Attack

$0010 = None

$0020 = Gravity

$0040 = --none--

$0080 = --none--

$0100 = Hi-Jump

$0200 = Space Jump

$0400 = --none--

$0800 = --none--

$1000 = Bomb

$2000 = Speed Booster

$4000 = Grapple Beam

$8000 = X-Ray Scope

$0001 = Wave

$0002 = Ice

$0004 = Spazer

$0008 = Plasma

$0010 = Charged beam

$0020 = --none--

$0040 = --none--

$0080 = --none--

$0100 = Missile / PB / Deadbeam

$0200 = Super Missile / PB / Deadbeam

$0400 = Dead Beam

$0800 = Dead Missile/Super

$1000 = Charge

$2000 = --none--

$4000 = --none--

$8000 = Live beam

$0500 = Bomb

15.

Upgrade PLM type. Depending on which PLM is selected in the PLM Selector (#2), this will either say "Suit", "Beam" or "HUD".

16.

Item bitflag set at this RAM address. You only need to worry about what this value says if you're programming custom items.

17.

Save PLM Instructions button. Must be clicked after changing any of the values under Door PLM (#12), Expansion PLM (#13), or Upgrade PLM (#14).

18.

Edit Save Station Data button. Set Samus's spawn point when loading a saved game. Clicking this button opens the Save Station Editor.

▲ ∧ Door Editor ∨ To open the door editor, set your mouse cursor on a door's BTS tiles (shown as 4 white squares behind the blue bubble that you shoot open) and press Ctrl+D.

1.

Toggle door bubble. This is actually a large button that you can click. This determines if the door that you pressed Ctrl+D on will force a blue bubble to close behind Samus after she goes through it.

2.

Door direction. Determines which direction that the door you pressed Ctrl+D on will send Samus after she goes through it.

3.

Current room's doors. The number of doors visible in this list will be different, depending on which room you're in. In this screenshot, I had the landing site open (which is the very first room ID, 791F8). The landing site has 4 doors, which are all seen here. The values next to the Door $## is where the data for that particular door is loated the ROM. In this screenshot, the value next to Door $00 is "$8916". Each door takes 12 bytes, and all door data is located in bank $83, which means $83:8916 is where you'd go in the ROM to see Door $00's 12 bytes of data (PC address: 18916), which is also displayed in the line pale yellow text fields (#5).

4.

Save Door Link button. Saves any edits you've made with the Door Editor.

5.

Door data. These pale yellow text fields show all of the data for highlighted entry in the door list above (#3).

6.

Link and Clear door buttons.

Link To Selected Door: connects the door that you pressed Ctrl+D on with any door of your choosing from the Copied Doors list (#8).

Clear Saved Doors: removes all entries from the Copied Doors list (#8).

7.

Door data of currently selected Copied Doors list entry. The values in these text fields will be copied over the values that are in the pale yellow text fields (#5) if the "Link Selected Door" button is pressed.

8.

Copied Doors list. Pressing Ctrl+C on a door's BTS (the 4 white squares behind the shootable blue bubble part) instead of Ctrl+D will copy that door's data to the Copied Doors list. In this screenshot, you can see "$791F8" and "$792FD", which are the room IDs that the copied doors are located in. The red numbers that you see inside of the 4 white squares tell you that door's number. Door $01 is the first door you see when you enter the room directly left of Samus's ship, so all 4 of its white BTS have a red 01 inside of them.

1.

Currently open room. The white box is what you should be looking at. It shows you which room you've got open in the level editor, as well as the full size of the room. Pressing and/or holding the M key allows you to move the white box around. This white box is the actual room's main X/Y position.

2.

Area map / main map editor area. Right click on a map tile to copy it to your clipboard (previewed in the small window at #3), which will then be placed by left-clicking, similar to the level editor. You can also choose the blue palette from the drop-down menu (#6, option 3), then right-click on tiles from the main map graphics table (#14) and use any of those.

3.

Map editor preview window #1. Shows you a close-up of the last tile that you right-clicked on, which is what will be placed if you click anywhere in the map editing area (#2).

4.

Map editor preview window #2. Shows a closer-up 3x3-tile view around your cursor as it moves over the map editing area.

5.

Map editor checkboxes.

Horizontal Flip: any new map tiles that you place will be flipped horizontally.

Vertical Flip: any new map tiles that you place will be flipped vertically.

Hidden: checking this box before placing a map tile will give it a red dot, which means it will only be added to the map when Samus explores that map tile herself. Map stations won't reveal hidden map tiles.

Full Map: hide or unhide hidden map tiles.

6.

Map graphics palette. Lets you choose which palette that tiles from the map graphics table (#14) will use when you place them.

7.

Map position. Clicking on the 4 directional arrows will shift every tile in the map editing area by 1 tile (8 pixels) in the chosen direction. If you do this, you will need to edit each's room's X/Y positioning to re-align with the shifted map tiles.

8.

Map Screens. This is the number of map tiles that are currently placed.

9.

Tile data. Any map tile that you set your mouse cursor on will have its tile data value displayed here. Tile data is the word value which makes up the current tile. The whole map is made up of tiledata for all 2048 tiles.

10.

Tile number. Tells you the number of the map tile that your cursor is on. It counts starting from the very top-left of the map ($000) and ends at the very bottom-right ($7FF).

11.

$07F7,X Index. The X index needed to access the current tiles bit in RAM for the explored map. Since the RAM is $100 bytes, and each tile is one bit, that means each byte is 8 tiles. The info has the X index needed to get the right byte. Right below it is the bit you need to check for with that index ($07F7,X Bit).

12.

$07F7,X Bit. See $07F7 explanation (#11).

13.

"X =" and "Y =". Mouse cursor's current X/Y position in the main map editing area (#2), starting at 0,0 and ending at 3F,1F.

14.

Map graphics sheet. Right-click on a tile from the sheet to place it in the map editor area. To use a different palette, select one from the drop-down menu (#6).

15.

"Save Map" and "Load Map" buttons. The Load Map button will reload the map, but also ask you if you want to save your edits first.

1.

"GFX" menu. Import/export tileset graphics you've edited or painted from scratch.

Export CRE Graphics: creates a .GFX file in the same folder as the Super Metroid ROM that you currently have open in RF, called "[ROM-FILENAME] CRE.GFX". This .GFX file can be opened & edited in other programs, then imported back into your ROM.

Import CRE Graphics: imports and auto-saves the "[ROM-FILENAME] CRE.GFX" file that Export CRE Graphics creates.

Export SCE (scenery) Graphics: creates a .GFX file in the same folder as the Super Metroid ROM that you currently have open in RF, called "[ROM-FILENAME] $XX.GFX". $XX = currently selected tileset number (see #11).

Import SCE (scenery) Graphics: imports the "[ROM-FILENAME] $XX.GFX" file that Export SCE Graphics creates. After importing, save & reload the room, or click the Save Palette button to make the edited graphics display in the tile table and level editor.

2.

"Tile Table" menu. Import/export the tile tables for area tilesets (affects the contents of the Tile Table window).

Export CRE Tile Table: creates a .TTB file in the same folder as the Super Metroid ROM that you currently have open in RF, called "[ROM-FILENAME] CRE.TTB". This .TTB file contains the tile arrangements made by the Tile Table Editor for the CRE table, which the Tile Table needs for showing its graphics properly. The Tile Table Defaults for placing tiles with left/right click are also saved.

Import CRE Tile Table: imports and auto-saves the CRE tile table (.TTB) file.

Export SCE (scenery) Tile Table: creates a .TTB file in the same folder as the Super Metroid ROM that you currently have open in RF, called "[ROM-FILENAME] SCE $XX.TTB". XX = tileset that was selected when you chose to export (see #11). This .TTB file contains the tile arrangements made by the Tile Table Editor for the SCE table, which the Tile Table needs for showing its graphics properly. The Tile Table Defaults for placing tiles with left/right click are also saved.

Import SCE (scenery) Tile Table: imports and auto-saves the selected SCE tile table (.TTB) file.

3.

Color palette of currently loaded tileset. Click on a color and edit it using the red/green/blue sliders below (#10). To copy/replace a color: click on any of the red/green/blue boxes (#10) and hold the click so that your cursor turns into a small metroid icon, then drag + drop that metroid icon over the color that's being replaced.

4.

Palette line. Click on the any of 0-7 buttons and drag + drop to one of the palette line holders (#7 or #8), or to one of the four sections of the tile table editor.

5.

Hex value of currently selected color. Useful if you want to use the hexadecimal color code of a non-SNES color for something in Super Metroid. Enter the hex color code in the "Hex" box, and its closest compatible SNES color will automatically appear in the R/G/B area (#9 and #10), which replaces the currently selected color.

6.

Save Palette, Import and Export buttons.

"Save Palette" overwrites any edits you made to the tileset's palette (#3). "Import" lets you select and load a tileset palette that you've exported. "Export" creates a palette file in the same folder as the currently opened ROM, called "[ROM-FILENAME] $XX". $XX = the tileset number (see #11). The file format will be .TPL (Tile Layer Pro), .PAL (YY-CHR), or .FPL (FaTilety), depending on which option you have selected in the Palette Format box ("Preferences > Palette Format").

7.

Palette holder buttons. Palette lines (#4) can be dragged and dropped here, letting you easily overwrite a whole line, or copy it to a different tileset's palette.

8.

Palette holder preview. Drag + drop indidividuals colors from here to a color in the tileset's palette (#3) to replace it, or from one of the palette holder buttons to a palette line (#4) to replace the whole line.

9.

Red/green/blue sliders. These are used to edit the currently selected color in the tileset's palette.

10.

Red/green/blue value boxes. Drag + drop to copy current color.

11.

Currently loaded tileset. Picking an entry from this drop-down menu will load an area's tileset for editing.

12.

Currently loaded CRE. This drop-down menu is blank by default, and only becomes available if you're using the MultiCRE patch. Unlike SCE, CRE's tiles and table are loaded by different code elsewhere.

13.

CRE table address. Location of the CRE tile table, which is the same for all tilesets. The data at this location is overwritten when you import the exported CRE .TTB file. Can point to anywhere in the ROM.

14.

CRE tiles address. Location of the CRE graphics sheet, which is the same for all tilesets. The data at this location is overwritten when you import the exported CRE .GFX file. Can point to anywhere in the ROM.

15.

SCE (scenery) table address. Location of currently selected tileset's tile table. The data at this location is overwritten when you import the exported SCE .TTB file. Can point to anywhere in the ROM.

16.

SCE (scenery) tiles address. Location of currently selected tileset's graphics sheet. The data at this location is overwritten when you import the exported SCE .GFX file. Can point to anywhere in the ROM.

17.

Tileset palette address. Location of currently selected tileset's palette. Tileset palettes can be up to 259 bytes long. Can point to anywhere in the ROM.

1.

Palette line number for tile table section. Notice that there are 4 of these pale yellow boxes with a number between 0-7 in them. Click these boxes/buttons to cycle forward through palette lines, and right-click them to cycle backwards. You can also drag + drop from the palette line buttons (Tileset Editor part 1, #4).

2.

Horizontal / Vertical flip buttons for tile section. Each tile section has two rectangular white buttons (horizontal/vertical) next to it that can be clicked. An arrow inside of these white buttons means that it is currently applying a flip to that section of the tile.

3.

Tile Table editor. Clicking on a tile in the table below (Tileset Editor part 3, #1) will show you a close-up of it here for editing. Clicking on a section of the tile will toggle a red square on/off.

Red Square = tile will appear behind Samus.

No Red Square = tile will appear in front of Samus.

4.

Copy, Paste, or Save tile table buttons. "Copy" copies the contents of the Tile Table Editor (including flips and red squares), which can be pasted over other tiles in the tile table by clicking on a tile to bring its contents up in the Tile Table Editor, then clicking "Paste" to overwrite with what you copied. The "Save" button writes your edits to the CRE or SCE Table addresses of the currently open tileset.

5.

Tile number. Currently selected tile's number in the table. Counts starting from the very top-left ($000) and ends at the very bottom-right ($3FF).

6.

Tilesheet GFX numbers. The 4 values here correspond with the 4 sections in the tile table editor (#3). The values themselves are the tile numbers that each tile section is using from the tile sheet (Tileset Editor part 4, #2).

7.

Copy 16x16 Tiles checkbox. While checked, increases the number of tiles you can drag from the Tile Sheet at a time from 1 to 4 by changing the size of the white box from 8x8 pixels to 16x16.

8.

16x16 Palettes checkbox. While checked, dragging and dropping a number from the palette line onto any section of the Tile Table Editor will apply that palette number to all four sections instead of just one.

9.

Copy Tilesheet Palettes checkbox. Copies the palette line value along with the tile graphic when tiles are dragged from the Tile Sheet and dropped into the Tile Table Editor.

10.

Special GFX drop-down menu. The options in this menu are graphic sheets that SMILE RF can export for you. Exported graphic sheets (.GFX files) can be opened, edited and saved with other programs, and then imported back into your ROM.

11.

Special GFX PC address. Displays the PC address of the currently selected entry in the Special GFX drop-down menu. When the very bottom drop-down option is selected ("Custom Graphics"), this PC address field becomes editable, allowing you to type in your own PC address and export the graphics from there.

12.

Import Graphics and Export Graphics buttons. The Export Graphics button will instantly create a .GFX file in the same folder that your currently opened ROM is in (if a .GFX file with the same filename already exists, it will be overwritten). The Import Graphics button opens up a file selection menu, and choosing a .GFX file from it will instantly save the modified graphics to your ROM.

1.

Currently selected tile for editing. The white box is what you should be looking at specifically. Left-clicking on a tile puts this white box around it, which means it's been loaded up in the Tile Table Editor for editing (Tileset Editor part 2).

2.

Temporary-use tiles that appear blank. Specifically, the 8 blank tiles that have the solid horizontal blue line going through them, which other PLMs will use. These should never be altered, even if you've repointed the CRE table.

3.

White "XXXX" tiles in the CRE tile table. Don't edit these tiles unless you've repointed the CRE table.

4.

Last tile of the CRE table. This is the default invisible tile that all rooms use for open air (marked with a solid blue dot). All of the tiles starting at the upper-left (the tile that's inside the white box marked at #1) and ending at this tile are what make up the CRE table (top 32x8 tiles of the total tile table, which is every tile ABOVE the pink line). The CRE table is the same size for all tilesets, and shared between all tilesets by default.

5.

First tile of the SCE (scenery) table. Marked with a solid blue dot. Every tile between this one and the last scenery tile (#6) are what make up the SCE tile table (bottom 32x24 tiles of the total tile table, which is every tile BELOW the pink line). The SCE table will be different for each area, and you shouldn't edit any of the tiles with the Tile Tale Editor until you've repointed it, or know how to make back-ups and watch for overwrites of the next tileset's tile table.

6.

Last tile of the SCE (scenery) table. Marked with a solid blue dot.

1.

Currently selected palette for GFX sheet. The 0-7 buttons represent the 8 palette lines that are available to the tileset's palette (the same palette lines shown by the buttons in Tileset Editor part 1, #4). The purpose of this is previewing the tile sheet, and also having the palette number already applied if you drag + drop to the Tile Table Editor (Tileset Editor part 2, #1 and #3).

2.

Currently selected Tile Sheet tile. The purpose of the tile sheet is dragging + dropping tiles from it, and onto one of the 4 sections of the Tile Table Editor (Tileset Editor part 2, #3). Tiles from the tile sheet are 8x8-pixel squares, and there can be up to 4 of them in each of the 16x16-pixel blocks that are used used by the tile table and level editor to build rooms.

▲ ∧ Palette Editor ∨ Special Palettes, Samus Palettes, Palette Editor, Palette Chooser, Palette Options

1.

"Palette" drop-down menu. Loads palettes up for editing in the Palette Chooser (#4) right away, without needing to know its location in the ROM. The default selection is I'm A Genius, which is what allows the Address and length (#2) fields to the right to be edited. Picking another entry besides I'm A Genius will show you that palette's address/#, which can't be edited. The contents of this drop-down menu can be edited by changing its associated text file (SMILE RF\Files\Data\palette_entries.txt - must close & re-open RF for changes to take effect).

2.

"Address" and "#" text fields for I'm A Genius. Entering the PC address and length of a known palette will bring that palette up for editing in the Palette Chooser (#4). See palette locations.

3.

Currently selected palette line. The palette line next to the checked button will be copied by clicking the Copy button (#10). Check a different button and click Paste (#10) to overwrite that palette line with the one you copied.

4.

"Palette Chooser" (special palette editor). This palette editor works like the one that's in the tileset editor. Click a color, then change it using the RGB sliders (#8, not #11).

5.

"Suit" drop-down menu. Each of these suit options has its own set of Condition options (#6).

6.

"Condition" drop-down menu. Selecting one of these options will bring up Samus's palette for that particular instance for editing in the Palette Chooser (#4).

7.

Samus palette preview. Changes in real-time as you move the RGB sliders (#8, not #11).

8.

RGB (red/green/blue) buttons. Can be used as a button which allows you to drag + drop its values over a color in the Palette Chooser (#4).

9.

RGB (red/green/blue) sliders. Use these to edit the currently selected Palette Chooser color (#4).

10.

Copy/paste, import/export and save buttons.

"Copy" copies the currently selected palette line (#3).

"Paste" will overwrite any newly selected palette line with the line that you have copied. You cannot copy or paste more than one line at a time.

"Export" creates a palette file in the same folder as the Super Metroid ROM that you currently have open in RF, with a filename that's named after the currently selected drop-down menu entry or address/# values, and with a format of .TPL (Tile Layer Pro), .PAL (YY-CHR), or .FPL (FaTilety), depending on your current selection in the "Preferences > Palette Format" menu.

"Import" lets you choose a .TPL, .PAL or .FPL file to load into the Palette Chooser.

11.

RGB fading sliders. Useful for certain Samus Condition palettes (#6) with many rows, such as Heat Glow. Notice that the other set of RGB sliders (#8/9) in the screenshot only show 00 if scrolled all the way left, while these RGB fading sliders only show 00 with if the scrollers are in the the middle. This allows the Fade Out or Heat Glow buttons (#12) to darken the Palette Chooser's color rows by subtracting.

12.

Fade Out, Heat Glow and Transition buttons.

Fade Out: adds the values of the RGB fading sliders (#11) to the colors displayed in the Color Chooser (#4) in increased amounts for each row going downward, starting from the top row.

Heat Glow: adds the values of the RGB fading sliders (#11) to the colors displayed in the Color Chooser (#4) in increased amounts for each row going downward, starting from the top row and stopping at the middle row, then subtracting in the same amounts until the bottom row.

Transition: creates a smooth transition from the top color row, going down to the bottom color row.

13.

"Animated Palette" checkbox. While checked, the Palette Chooser's rows are cycled through at a certain speed, giving you a preview of how the rows of color will transition together.

14.

"Animated Palette" scroller. Adjusts the cycling speed of the Animated Palette preview checkbox (#13).

15.

"Palette Line Size" and "Palette Offset" scrollers.

Palette Line Size: how many colors for the Palette Chooser (#4) to display horizontally.

Palette Offset: lets you skip bytes at the end of each palette line. Example: if there's a palette which is 16 bytes long, then 2 bytes of data, then another 16-byte palette, then another 2 bytes of data, you'd set the offset to 2, which would skip those 2 bytes of data after each palette.

1.

Currently selected tile(s) to use with level editor. Right-click + drag to select multiple tiles, up to 16x16.

2.

"Tile Table Defaults" menu. Double-click on a tile in the Tile Table to bring up this menu. The settings you choose will only apply to tile that you double-clicked. This menu is purely a setting within SMILE RF that doesn't make any edits to your ROM.

3.

Default BTS type for left/right click. Navigate the tiny scrollers to choose a default behavior for that particular tile. Each tile can be given 2 default behaviors, which are decided by left or right-clicking on the tile when you select it from the tile table.

4.

Default BTS number for left/right click. BTS $00 is what most of them will use.

5.

Save/cancel tile table defaults. This is a setting within SMILE RF only, so it doesn't make any changes to your ROM.

1.

Message box editor / preview. Available editing space will be sized according to the type of message box that's open.

2.

Currently selected message box for editing. Entries in this list are loaded for editing in the space above (#1).

3.

Close-up preview of currently selected message box tile. Right-click on a tile in either the main editing area (#2) or the message box tile table (#7) to select it. Left-click anywhere in the editor (#1) to place the selected tile.

4.

Close-up of the 3x3 area around mouse cursor.

5.

Palette line to use. Picking an entry from this drop-down menu changes the palette of the message box tile table (#7).

6.

"H-Flip" and "V-Flip" checkboxes. Flips the currently selected message box tile (#3) horizontally and/or vertically.

7.

Message box tile table. These graphics are stored at $9A:B200 (PC: D3200).

8.

Save and reload message box edits. "Save Msg" saves any changes to the currently selected message box that you've made. "Load Msg" undoes any edits you've made since opening the message box editor, or last clicking Save Msg.

1.

Mode 7 editing area. Right click to select a tile, left-click to place it.

2.

Currently open mode 7 screen. The contents of this drop-down menu cannot be edited.

3.

Import/Export GFX buttons. Import or export a .GFX file for the mode 7 graphic sheet (#6) that the currently open mode 7 screen will use.

4.

Currently selected mode 7 tile. The last tile that you right-clicked in either the mode 7 editing area (#1) or the mode 7 tile table (#6) will be shown here.

5.

Close-up of the 3x3 area around mouse cursor.

6.

Mode 7 tile table. Right-click to a select a tile from here and place it in the main editing area (#1) with left-click.

7.

"Save Mode 7 Tilemap" button.

▲ ∧ SMILE RF Hotkey list Keyboard shortcuts to make life easier

All windows:

Tab - Cycle through currently opened editor windows

- Cycle through currently opened editor windows F1 - Layer 1

- Layer 1 F2 - Layer 2

- Layer 2 F3 - BTS

- BTS F4 - Gridlines/scrolls

- Gridlines/scrolls F5 - PLMs

- PLMs F6 - Enemies

- Enemies F7 - Show all (F1-F6)

- Show all (F1-F6) F8 - Hide all (F1-F6)

- Hide all (F1-F6) F9 - Unused

- Unused F10 - Unused and never will be used.

- Unused and never will be used. Shift + Esc - Move main SMILE RF window to 0,0

- Move main SMILE RF window to 0,0 Esc (hold + run SMILE RF.exe) - Unload previous ROM, all editors hidden

- Unload previous ROM, all editors hidden Ctrl + F1 - Hide/unhide Level Editor

- Hide/unhide Level Editor Ctrl + F2 - Hide/unhide Tile Table

- Hide/unhide Tile Table Ctrl + F3 - Hide/unhide Map Editor

- Hide/unhide Map Editor Ctrl + F4 - Hide/unhide FX Editor

- Hide/unhide FX Editor Ctrl + F5 - Hide/unhide Tileset Editor

- Hide/unhide Tileset Editor Ctrl + F6 - Hide/unhide Palette Editor

- Hide/unhide Palette Editor Ctrl + F7 - Hide/unhide Task Log

Level Editor:

Ctrl + Z - Undo (max 32)

- Undo (max 32) Ctrl + Y - Redo (max 32)

- Redo (max 32) Ctrl + E - Quickmet

- Quickmet Ctrl + E (On Door) - Go to next room

- Go to next room Shift + Ctrl + E (On Door) - Force open room, temporarily add to list, doesn't alter mdb.txt

- Force open room, temporarily add to list, doesn't alter mdb.txt F11 - Quick BTS A

- Quick BTS A F12 - Quick BTS B

- Quick BTS B 0-9, A-F - Quick BTS values

- Quick BTS values Ctrl + Left click + drag - auto-place H-Copy and V-Copy BTS

- auto-place H-Copy and V-Copy BTS Ctrl + D - Door Editor

- Door Editor Ctrl + C - Clone Door

- Clone Door Ctrl + L - Load Door

- Load Door Ctrl + S - Quick Save

- Quick Save Shift - Show Liquid

- Show Liquid = - Copy/apply BTS

- Copy/apply BTS Q - Metroid buddy options

- Metroid buddy options Home - Next tilesize up

- Next tilesize up End - Next tilesize down

- Next tilesize down PgUp - Next brightness up

- Next brightness up PgDn - Next brightness down

- Next brightness down Arrow Keys - Quickly flip tiles

- Quickly flip tiles ` (hold) - Show tile info in "Level Editor" window title

- Show tile info in "Level Editor" window title Mouse wheel click + drag - Scroll through room

- Scroll through room Ctrl (hold) + drag enemy - Reverse current "Snap Enemies to Grid" setting

- Reverse current "Snap Enemies to Grid" setting Alt (hold) + drag possessor enemy - Turn off "Move Possessors Together" setting

Tile Table:

Home - Next tilesize up

- Next tilesize up End - Next tilesize down

- Next tilesize down PgUp - Next brightness up

- Next brightness up PgDn - Next brightness down

Tileset Editor:

C - Copy tile in tiletable

- Copy tile in tiletable V - Paste tile in tiletable

- Paste tile in tiletable S - Save tiletable

Map Editor:

M (click or hold) - Set room's X/Y position on map

- Set room's X/Y position on map H - Toggle hidden/revealed tile

- Toggle hidden/revealed tile Arrow keys - Quickly flip tiles

- Quickly flip tiles E - Load room that mouse cursor is currently on

▲ ∧ PART 2: CREATING A ROOM ∨

Instead of picking a room and editing that, we're going to make a totally new, complex room from scratch and connect it in with the main game. This guide assumes you've never touched SMILE RF or a hex editor until right now, and that you know nothing about ROM hacking.

Depending on your monitor's resolution and general preferences, your setup will probably look a bit different from mine, since SMILE RF is made up of several individual windows that you can move around. Here is how I usually have mine arranged, with "Preferences > Auto Focus Windows" enabled. The FX Editor and Tile Table are nice to have open like this, but only the Level Editor is really needed. Here are some of SMILE RF's most basic functions for editing rooms:

Now, let's start creating that new room, and learning what a room actually is (hint: mos