Warp editing in ZOLE
Warp editing through ZOLE is complicated, and a little dangerous. Read this page to get an idea of what you're getting into.
Searching for warps
First, you need to find the warp you want to edit. If the screen you wish to place a warp on has no warps already, you'll need to find one which does.
Suppose you want to put a warp on present overworld map 00. Since there are no warps on that screen, you'll need to find another warp on the present overworld to move over there. (Any room with the same group will work; this is visible in ZOLE's status bar at the bottom.) Suppose you're going to take map 57's warp. Navigate to map 57, open the warp editor, and click "search". In the "warp header" box that just appeared, change "map" to "00". Click "OK". Then, confirm that the change worked by moving back to map 00 and searching for the warp.
Editing Warps
How you edit the warp depends on the value of the "Type" field. (Don't edit the "Type" field.)
Type 0
A type 0 warp is a warp that encompasses the entire screen. When you touch a door, a stairway, or any warping tile in that room, the type 0 warp will be activated. A room should only have one type 0 warp.
Type 0 warps have the following fields:
Warp Index
This is used in conjunction with "Dest. Group" to determine where the "Follow and Edit Warp" button will send you.
DO NOT EDIT THIS. You will probably corrupt another warp if you do.
Dest. Group
This is used in conjunction with "Warp Index" to determine where the "Follow and Edit Warp" button will send you.
DO NOT EDIT THIS. You will probably corrupt another warp if you do.
Entrance Type
This is safe to edit.
Follow and Edit Warp
This button will send you to another set of 3 bytes. Where it reads these 3 bytes from is determined by the "Dest. Group" and "Warp Index" fields.
- Dest Map: Which map you will be sent to. (The group is the "Dest Group" field described above, although editing that is dangerous.)
- Position: The YX position Link will spawn at. Setting this to FF will cause Link to walk in from the bottom of the screen.
- Unknown: Has various effects. Click the "?" button to see some values.
Type 40
Type 40 is used when there are multiple warps in specific positions on the screen. A good example is the shop in Lynna City. It has 2 doors, and each warps to a different position in a shop. Only one type 40 warp should exist in a room; however, it will reference one piece of data for each position that has a warp.
Aside from "Map", its only field is "Warp Pointer", which SHOULD NOT be edited. Although, unlike the warnings above for "type 0" warps, it's obvious why this is a bad idea (who edits pointers willy-nilly?)
Clicking on "Follow and Edit Warp" will send you to the data referred to by the pointer. The warps under "specific-position warp header" are always type 0 (or type 80, which acts the same except it tells the map to stop reading successive warps). The notes above for type 0 apply. The only difference is that "Map" is replaced with "YX", which is the position of the door that activates the warp. You're free to edit this.
The "Position-Specific Warp Properties" shows you the same data as clicking "Follow and Edit Warps" would for a type 0 warp. The notes for type 0 apply here, as well.
You can click "Next Warp" to see the next warp in the list of specific-position warps. ZOLE will warn you when you've reached the end of that map's list. Adding or removing warps from the list is not really practical, but possible if you want to mess with pointers.
Best practices
When selecting a warp to edit, it must:
- Be located in the same group as the room you want to move it to
- Have the correct "Type" field
- Have the correct "Dest. Group" field
Due to these limitations, it is possible to run out of suitable warps. In this case, if you cannot find a warp with a suitable "Dest. Group" field, you may look for warps in different groups which have a suitable value. Then, exchange the "Dest. Group" and "Warp Index" values of both warps. Doing this incorrectly will probably corrupt something, although you're not likely to notice at first.