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.

IDNameDescriptionExit List UsedIndex Used
0x18En_HollLoading PlaneCurrent SceneLow 7 bits of Params (if offset 0x144 == 0x04)
0x38Door_Warp1Blue WarpCurrent SceneHigh Byte of Params
0x55Door_AnaGrottoCurrent Scene or Grotto OverlayLow 5 bits of Params or all 16 bits of initial Z-rotation
0xA6En_HsGrog (Cucco Shack)Current SceneLow Byte of Params
0xBFEn_JsMoon ChildCurrent SceneBits 0x03F0 in Params
0xFAEn_Ge3Aveil (Pirate Leader)Current SceneUnknown bits of Params
0x116En_Warp_tagRainbow Warp (Goron Moon Trial)Current SceneLow 7 bits of Params
0x1CEEn_Test7Song of SoaringSong of Soaring OverlayUnknown bits in Params
0x1ABEn_Time_Tag(kicks you out of scenes at certain times of day)Current SceneLow 5 bits of Params
0x1FFEn_KgyGabora (Mountain Smithy)Current SceneLow 5 bits of Params
0x21DEn_KaizokuPirate FighterCurrent SceneOffset 0x2D4 in Actor
0x21EEn_Ge2Pirate GuardCurrent SceneUnknown bits in Params
0x238En_ZodTijo (Zora drummer)Current SceneHigh 7 bits of Params
0x27FEn_BomjimbBomber Kids (during hide-and-seek)Current SceneOffset 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