News:

Don't forget to visit the main site! There's lots of helpful docs, patches, and more!

Main Menu

Commonly Asked Q/A - PLEASE CHECK HERE FIRST

Started by Scyzer, April 12, 2010, 01:07:33 AM

Previous topic - Next topic

Scyzer

Please read this topic before asking a question. If the question hasn't been answered, feel free to make a new thread on it.
Don't ask questions here though. If a question gets asked which seems a good one to have here, it shall be done =]
Answers assume that you're working with unheadered roms where it may apply.




[Spoiler=Basic Questions]

Q: "How do I make it so a door bubble DOESN'T close behind me when I enter a room?"

A: You need to go into the door editor for the door LEADING into that room by pressing D over the door tiles or right clight. Click on the picture of the door bubble and it will just show Samus without the door. Now save the door and the room.

Q: "How do I change WHERE a door bubble closes behind me when I enter a room?"
A: You need to go into the door editor for the door LEADING into that room. In the editor you will see various numbers, which tell the game which room to transition to, what screen, etc. The values for where the bubble closes are the Xi and Yi, in 16x16 blocks (They count the WHOLE room, not just the screen). After any changes, save the door and the room.

Q: "Why do my doors open backwards when I shoot them?"
A: The direction a door opens in not determined by the way the tiles are facing, but rather, the BTS of the door. The top left tile of the door bubble will have a BTS value from $40 to $43. Each value opens the door in a specific direction. If your door is opening backwards, swap the BTS between $40 and $41 for horizontal doors (left and right), or $42 and $43 for vertical doors (up and down).

Q: "How do I remove the Scrolling Sky background from the Landing Site?"
A: Go Edit > Pointers. In the window that pops up, change the FX2 to 0000, BG_Data to 0000, Layer1_2 to 91D3. Now in the BG Scrolling (Tools > BG Editor > BG/Layer2 Scrolling), change it so it uses a Layer 2 Background and save.

Q: "The sky BG is still grey in game, even after I changed the palette in SMILE."
A: The palette for the sky is run by the FX1 option "Stay Grey". In the FX1 editor, make sure you untick this box when making a custom palette. This is the effect that also runs the flash of light, so you'll lose that.

Q: "How do change what area a room is in?"
A: Go Edit > Room Properties. A pop up will appear with several options such as area, size, grid locations, etc. Just change the area in the selection box and save the room.

Q: "Why do my rooms / GFX get all messed up after I go through a door?"
A: This is caused by the scrolling not being in the correct position when the door transition begins, and thus when the door transition ends, the scrolling will be out of sync with the refreshing of the room tilemap, which is what causes the garbled rooms. Most commonly it's caused by door tiles NOT being on the edge of a screen behind a RED scroll block (or the edge of the room), or by a ceiling/floor door being in the wrong color scroll (GREEN for up, BLUE for down).
NOTE: Saving S-RAM by "in-game saving" when encountering this glitch will allow you to fix it without reloading a state.

Q: "SMILE isn't loading my ROM"
A: Either you do not have the correct ROM (JU), or you have corrupted the ROM with a hex editor or bad repointing. Several things that can cause SMILE to crash are corrupted level data or tiletables, the ROM header getting corrupted ($81:FFC0-$81:FFFF), attempting to edit door properties for a door BTS that does not exist in that room, or the ROM is not made of full banks (last byte is at 7FFF or FFFF).

Q: "SMILE is showing a rediculous amount of space for a room. Is it editable?"
A: Yes, but you should be careful. If you have already edited the room quite a bit, you may have overwritten something. There is absolutely nothing wrong with the room. The incorrect size is a misinterpretation by SMILE of the level_entries.txt in SMILE's folder. The entries are stored in room order, rather than data order like they should be for SMILE to calculate correct space. There are also several entries missing, including the end of the Crateria Chozo Missile room, and multiple WS 2-stated rooms.

Q: "How do I change the number of items you get from a missile pack?"
A: Go into SMILE and right-click any PLM. Then scroll down to select a missile, and there is a PLM "value". This is how many of that particular item you get per tank. You can edit the values for each item, as well as all 3 types of items (open, Chozo, hidden). DO NOT change the values for any suit upgrades unless you know what you're doing, as these are items bits that are set when collecting that item. You can safely edit Missiles, Supers, PowerBombs, Energy/Reserve Tanks.

Q: "How do I add enemies or items to a room without any?"
A: Go Edit > Pointers. You need to repoint the PLM, Enemy Population and Enemy Set pointers (see below on repointing). Then go to Edit > Special > Enemy/PLM +/-.

Q: "How do I repoint data to free space?"
A: Go Edit > Pointers. Open up your ROM in a hex editor, and look for a chuck of FF's (this is free space) in the appropriate bank. The correct bank for each type of data is shown in the pointers window. When you find a chunk of FF's, write down the last 4 digits of the address. If it is below $8000, you MUST add $8000 to it. If the address you got was $CD45, that is already above $8000, so you can use that. If the address was $257F, it's below $8000, so you add $8000 first to get $A57F, which you can now use. You just need to put the address into the white box for the correct pointer, then save pointers.

Q: "What do the Vertical and Horizontal block types do, and how do I use them?"
A: These extend the block properties of the block they are pointing to, to the Horizontal/Vertical block itself. They work exactly the same as the "Arrow PLM" that are floating around everywhere in the original game, but without wasting valuable PLM space in $8F.

To use them, simply select the block you want to copy attributes to, and set the BTS of that block so that it points to the block you want to copy attributes from. In a Vertical block, a BTS of FF will copy attributes from the block directly above it. a BTS of 02 will copy the block 2 blocks below it, but the block directly below it in between will be unaffected. Horizontal blocks work the same way.
You can chain these blocks together to target attributes from blocks way across the room, or cover a wide area. If you want to copy a block that is one tile up and 2 tiles left, put a Vertical with BTS FF on the destination block, and a Horizontal with BTS FE on the block above the Vertical one. The Horizontal will copy the attributes of the block 2 to the left, and the Vertical block will copy those attributes from the Horizontal block above it.

Q: "What does BTS mean?"
A: Behind The Scenes. It refers to the block properties that are not immediately visible in game or SMILE, usually ran when a block is touched or shot.

Q: "Editing HUD and status screen. How do?"

A: It requires a tile editing utility such as Tile Layer Pro, but the address you want is D3200. Don't forget to turn on Gameboy mode (or four color equivalent in your tile editor of choice.)

Q: "Why can't I see the first two layers of tiles in Tile Layer Pro?"
A: This is a bug in TLP, caused by the program expecting to open a rom with a header. TLP will start displaying tiles from $200 onwards, even for headerless files, which is why you can't see the top two lines in a GFX file. Use this patch to fix it: http://www.romhacking.net/utilities/361/.

Q: "Why is Draygon moving strangely in my hack?"
A: Not commonly known, but Draygon's movements in the room are based on her original position in the ROM. She is normally offscreen to the top left of the room. If Draygon is moving weirdly, try moving her back to the top left of the room (the original coordinates for all pieces of Draygon are X = $FFB0, Y = $FFB0).
[/Spoiler]




[spoiler=Harder Questions]

Q: "How do I make Samus start with items and beams?"
A: The easiest way is with a short piece of ASM using a hex editor. Grab a hex editor of your choice, open your rom, and go to $80:B2FD ($00B2FD PC address). You should see [9C A2 09]. Replace this with [20 20 EF].
Now go to $80:EF20 ($00EF20 PC address). You should see a whole chunk of FF. Starting at $80:EF20, write the following bytes:
[A9 XX XX 8D A2 09 8D A4 09 A9 YY YY 8D A6 09 8D A8 09 60]
XX XX = item bits to start with (reversed)
YY YY = beam bits to start with (reversed)

The item and beam bits can be seen in SMILE's PLM editor. Simply search for the item to equip, and add it's "value" to the equipped beams/items ASM above. EG, to equip Varia and Gravity suit, and no beams, find the values of Varia and Gravity (0001 and 0020), add them together (0021) then add that value to the ASM ([A9 21 00 8D A2 09 8D A4 09 A9 00 00 8D A6 09 8D A8 09 60])

Q: "How do I make remote gates, with the switch separate from the gate? AKA Redesign"
A: The simplest way to do this is to use the Horizontal and Vertical block types. Find where you would like to put the gate switch, and use H/V blocks to lead back to the gate switch colored part (the bit you shoot). Keep in mind that the switch on the gate will still be shootable, but you will also be able to open the gate by shooting any of the V/H blocks in the path.

To remove the switch from the gate, and have it somewhere else, you will need to change some ASM in the PLM for the switch.
To keep the gates in a permanent state (They're still open after changing rooms), you need ASM which will set the gate state in some event/door bits (saved to SRAM), and then read those bits when entering the room to determine if the gate should be open or closed.
[/spoiler]

squishy_ichigo

Ok, so I'm tired of seeing it, so I'm gonna explain it once and for all and then post to this anytime someone asks.




Q: "Do I need hex or asm?"

A: Alrighty, so.... I guess we start at the lowest level. Everything sprouts from Boolean logic, the fact that electronic circuits are either "on" or "off". From this comes binary and "machine language". Anything, anything at all, that you send to your computer to do can thus be represented using binary, and as such hexadecimal, as it's simply another way (and much more convenient way) of seeing data. You could instead use a program to see the binary code of Super Metroid if you wanted, but this would be inefficient.

ASM, or "Assembly language" is a higher level of coding that converts the "code" to machine language so your computer can interpret it. Super Metroid is coded using the SNES' native format, 65816. It follows a very specific set of rules, like all programing languages that you must understand to use fully.  To apply it, you use a compiler, to change the code from something that we as humans can understand more easily to machine language. This can then be seen using your hex editor. If you know what means what, anything, and I do mean anything, can be done using a simple binary or hex editor. Pretty cool right?

So the shortish answer is this. To do what it is that you want likely takes knowledge of ASM to do, but with that knowledge, you can share this information in either a .asm format or a hex format, depending on which way is best for the specific situation.

Zhs2

#2
For those of you asking questions about why SMILE doesn't work due to silly things and Visual Basic, here's a list of things you can try to see if it will fix SMILE. I'll do my best to update this as more information appears. If you think you've found a new wrinkle (runtime error condition,) post it in this board!

  • Runtime Error 6 - Running SMILE 2.5 after running Parlor or equivalent throws this error. Delete your INI file if you really need to use SMILE 2.5 again. Occurs at start-up.
  • Runtime Error 9 - Parlor throws this when invalid data is encountered, either when a ROM is opened that isn't Super Metroid (or a hack of it,) or when pointers or level data are invalid. If this error is encountered at start-up, create a new INI file with SMILE 2.5. If this error is encountered in your current hack work, try a backup.
  • Runtime Error 75 - Encountered when SMILE can't access the data in your ROM file due to lack of file permissions. Make sure you're not attempting to access something on a read-only drive or while it's being sync'ed by Dropbox (the latter disallows access to the file during an upload.)
  • Runtime Error 76 - Make sure your Plugins folder exists in the files folder. Occurs at start-up.

  • SMILE JX requires you to download version 2.8 before you download one of its updates, for the updates do not include all of the files necessary to run. Overwrite SMILE JX 2.8 with updates!