Exit List Index SRM

Discovered by Rylie

Similarly to owl statues, the actor parameters of many other actors are used to index an exit list. However, unlike owl statues (in which Song of Soaring or the file select screen sets the new entrance), these other actors set your entrance directly. By manipulating the actor parameters (offset 0x1C), or another field, of various actors that set your entrance, it is possible to wrong warp to a subset of locations depending on the actor and the scene.

Woods of Mystery "fake" loading planes

The Woods of Mystery are composed of a 3x3 grid of rooms. The path between the rooms varies depending on the day.

   Day 1              Day 2              Day 3   

6    7 <- 8        6    7 <- 8        6 -> 7 -> 8
          ^             |    ^        ^         |
          |             v    |        |         v
3 -> 4 -> 5        3 <- 4    5        3 <- 4    5
^                            ^             ^     
|                            |             |     
0 <- 1    2        0    1 -> 2        0    1    2

How was this achieved? In other scenes with day-dependent room layouts (such as beaver race), collision barriers serve to block you off from the unused rooms. But in the Woods of Mystery, taking a wrong turn actually sends you back to Southern Swamp.

Well, the answer lies in the loading plane actor (0x18, En_Holl). Byte 0x144 (the first Byte following the header that is common to all actors) of the actor instance sets the "type" of loading plane it is. 0x00 in that Byte will mark the actor for death. 0x04 marks the actor as a "scene changer". Anything else will cause the actor to behave like a "normal" loading plane (one that changes the room). Note that the subsequent Byte (0x145) sets the opacity, which means that clear (0x00) and black (0xFF) loading planes are exactly the same, contrary to popular belief, and the difference is purely visual.

The tunnels between rooms on the incorrect path are filled with these "scene changer" loading planes. They act essentially like loading zones (which are what's used for the tunnels on the periphery of the 3x3 grid). However, since loading planes are actors rather than specially-marked collision triangles, they can be manipulated with SRM. This is made much more convenient by the fact that the "fake" loading planes actually allocate with all the other actors in the room. "Normal" loading planes allocate before everything else in the room, which makes it impossible to manipulate them in a scene with only 2 rooms.

So how do these loading planes know to send you to Southern Swamp from Woods of Mystery? Well, it's set in the Actor Parameters (offset 0x1C), the same field we manipulate for Owl Statue SRM. Specifically, the low 7 bits of the actor parameters are used to index the exit list for the current scene. By default these bits are 0, causing the first entry in the table to be grabbed, which is Southern Swamp from Woods of Mystery. This exit list has only one entry in it, but due to the 7 available bits, we can index far past the bounds, leading to a variety of wrong warps.

All Actors that use an Exit List

There are other actors that set your entrance based on an index to an exit list as well. All such actors are conveniently posted here as a table.

ID Name Description Exit List Used Index Used
0x18 En_Holl Loading Plane Current Scene Low 7 bits of Params (if offset 0x144 == 0x04)
0x38 Door_Warp1 Blue Warp Current Scene High Byte of Params
0x55 Door_Ana Grotto Current Scene or Grotto Overlay Low 5 bits of Params or all 16 bits of initial Z-rotation
0xA6 En_Hs Grog (Cucco Shack) Current Scene Low Byte of Params
0xBF En_Js Moon Child Current Scene Bits 0x03F0 in Params
0xFA En_Ge3 Aveil (Pirate Leader) Current Scene Unknown bits of Params
0x116 En_Warp_tag Rainbow Warp (Goron Moon Trial) Current Scene Low 7 bits of Params
0x1CE En_Test7 Song of Soaring Song of Soaring Overlay Unknown bits in Params
0x1AB En_Time_Tag (kicks you out of scenes at certain times of day) Current Scene Low 5 bits of Params
0x1FF En_Kgy Gabora (Mountain Smithy) Current Scene Low 5 bits of Params
0x21D En_Kaizoku Pirate Fighter Current Scene Offset 0x2D4 in Actor
0x21E En_Ge2 Pirate Guard Current Scene Unknown bits in Params
0x238 En_Zod Tijo (Zora drummer) Current Scene High 7 bits of Params
0x27F En_Bomjimb Bomber Kids (during hide-and-seek) Current Scene Offset 0x2B2 in Actor

This is a spreadsheet of all the possible entrance values for Exit List Index SRM Wrong Warps for various actors.

Note that none of these warps are likely to be useful in a speedrun context, especially considering the fact that arbitrary wrong warps were discovered in the form of Grotto Overlay SRM only a day later. As such, you may have never heard of Exit List Index SRM before reading this page, but it's still included for completeness, as well as historical context.

Last updated 11/10/2020 – Exodus