1. There is not a command, but a while ago I figured out a rigged way to do it. It's by no means simple. This is part of the script from Nature that sends Link to the island after you beat level 2 and talk to some lady:
//fade in
setmemory c4ac 01
setmemory c2ff 1d
setmemory c4b1 ff
setmemory c4b2 ff
setmemory c4b3 ff
setmemory c4b4 ff
setmemory c4ab 0a
//we're gonna callscript the map warping procedure
//so we have to simulate a warp
setmemory cc47 00 //group
setmemory cc4a 42 //entrance type
setmemory cc49 81
setmemory cc4f 0a
//setmemory d000 03
//setmemory cc31 01
//setmemory cc35 ff
setmemory cc2d 00
setmemory cc48 c3 //map
setmemory cc30 c3
setmemory d00b 48 //Link Y
setmemory d00d 68 //Link X
setmemory d040 0
setmemory d140 0
setmemory d240 0
asm15 20
//End
At 0x20 in the ROM, I have these bytes:
F0 97 F5 3E 01 E0 97 EA 22 22 CD 60 5A F1 E0 97 EA 22 22 C9
You shouldn't have anything important at 0x20, but if you do, you could put those bytes in some free space in bank 0 (0-0x3FFF) and change the 20 in asm15 to wherever you put those bytes.
2. SetVisible shows (or hides?) an interaction. I don't know what those values do. They can vary from interaction to interaction. With enemies, those values respectively are the enemy's stage, unknown (maybe lower byte of a movement timer), and movement direction.
3. PlaySound just plays a sound without looping and keeps the current music. SetMusic changes the music.
4. I don't know what it's used for. Most likely a value related to the map you're on (eg. how many torches are lit, how far the wall lever is pulled out, etc). Most likely yes, except it would use 2 extra bytes.
5. Not an easy way in scripts that I can think of. Here is a list of all the inventory slot's memory addresses.
00:C688 b_weapon
00:C689 a_weapon
00:C68A inv_slot_0
00:C68B inv_slot_1
00:C68C inv_slot_2
00:C68D inv_slot_3
00:C68E inv_slot_4
00:C68F inv_slot_5
00:C690 inv_slot_6
00:C691 inv_slot_7
00:C692 inv_slot_8
00:C693 inv_slot_9
00:C694 inv_slot_A
00:C695 inv_slot_B
00:C696 inv_slot_C
00:C697 inv_slot_D
00:C698 inv_slot_E
00:C699 inv_slot_F
6. A cycle is usually just a set of tasks that get performed every iteration. For example, every cycle, it handles interaction code. Maybe every cycle it increments C622, and perhaps whenever the game needs to get a random number, it uses the value at C622 as a seed for the randomizer, which would make it seem random.
7. No. Each stage increments the lever in steps of 10 (0xA). For 7 steps, thats 7 * 10 = 70, or 0x46. However, when a lever is pulled out as far as it can go, the value changes to 0xC0, so that's what you would check for. The length you can pull it out to depends on what you put in the interaction data.
8. FF and FF. Overworld maps are 10x8 in block sizes. Each block is 16x16 pixels, which the coordinates represent. -8 for the center, that comes out to be (154, 120). Big room sizes are 15x11 tiles, so do the same thing. 240x176, -8, you get (232, 168)
9. I believe it shows a text ID and jumps to the script at 305F0. I don't know what the script at 305F0 is, and ZOSE doesn't handle opcode EB apparently, so maybe we'll never know.
10. There is a command "SetTextID", which will set an interaction's text ID. When you ShowLoadedText, it will use that value to display a text box, whereas with ShowText you provide an address in ZOSE. I can't think of any immediate benefits over doing one over the other, except for maybe using multiple scripts to affect one NPC.
11. Yes, but realistically no. The two values together make up a 16-bit integer, a value ranging from 0-65535 instead of 0-255. I believe the value is little-endian too, so value 1 would range from 0-255 and value 2 might only actually go from 0-10. I might have that backwards.
12. Yes, although Fatories has managed to make his own bosses. I don't know how he did it. You'll have to talk to him. As for making them appear, you just use the interactions you find in boss rooms. Do note that the game will crash if the doors in the room don't match the original. There's no way to change them unless you know how to edit the assembly behind the interactions. They do have their own enemy IDs though, if that's what you're asking. Zerpha compiled a list of them here:
http://zeldahacking.net/forum/index.php?topic=34.msg501#msg50113. Honestly, I have no idea.
14.
http://en.wikipedia.org/wiki/Bitwise_operation15. These are useful commands, although I've never used them. SetInteractionFactor allows you to set a DxYY value without knowing what the x is in your interaction's address. For example, if your interaction is at D2** or D4**, regardless of the number there, your code will set the same value. You just provide it with the YY (the **) and the value to set it to. AddSetInteractionFactor does the same thing but instead it adds a value onto the value that's already there.
16. ASM15 allows you to execute any assembly in bank 15 (and bank 00 if you remember how Gameboy addressing works). I used it in the script above to force a warp, even though there wasn't really one.
17. 50. Dang, I didn't realize it was so high. Lol.
And just for the record, I read the rules (
http://zeldahacking.net/forum/index.php?topic=243.0), where it mentions about being "spoonfed" information, and I realized that I might be appearing that way with the post above. I have tried some of these things I mentioned, but I just can't figure them out. I don't want to attempt some stuff, cause I'd be afraid I would enter a "wrong" value and mess up the entire hack I've been working on for a while. Better to be safe then sorry. If I'm coming off as being rude, offensive, or just plain too curious, I apologize in advance. Just wanted to mention that. I wish you guys all the best : )
Backups are extremely useful. I highly recommend making them often. Also, just plugging in random values to something is a good way to figure out how something works. It might not always be enough to just observe something properly working. You might need to see it incorrectly working to see exactly what it's doing. Also it's no problem.