Ocarina of Time

Cutscene Pointers

The cutscene pointer stores the location in memory in which the previously watched cutscene is stored. The reason this is important is that when preforming a wrong warp, if the scene you arrive at has no cutscenes defined, then the game will attempt to play whatever is stored at the cutscene pointer. When this happens, there is a chance that the previously watched cutscene has already been overwritten in memory, meaning that the game will attempt to interpret garbage data as a cutscene. In many cases this will cause the game to crash. In other cases the game will instead play a very long cutscene. Of note for these long cutscenes, if the length of the cutscene is over 65536 frames (about 54.5 minutes), then the cutscene will never end, resulting in an softlock.

Interpreting Cutscene pointer

For the majority of uses when preforming a wrong warp which will use the cutscene pointer we want to ensure that no cutscene attempts to play. To do this, we need to ensure that either the cutscene lasts for 0 frames, or contains 0 commands. A negative value for cutscene length or commands is interpreted as zero as well. Practically, what needs to happen is that the value pointed to by the cutscene pointer (the number of commands in the cutscene) is either 0 or negative, and the value at cutscene pointer + 0x4 (the length of the cutscene in visual frames) is also either 0 or negative.

As an example, in the Ganondoor wrong warp used in the Classic Kak speedrun, our last watched cutscene is the Deku Tree intro, which on version 1.2 has a cutscene pointer of 0x80382d60, then upon entering tower collapse, the value at 0x80382d60 will be 34143917, and the value at 0x80382d64 is -30539216. As such the game will see it is trying to start a cutscene which lasts 0 frames, and will as such choose not to begin the cutscene. This results in no cutscene being played, so the wrong warp works as expected.

Being able to read the cutscene pointer value like this can speed up the process of verifying if a cutscene will work as desired.

Heap manipulation wrong warps

While the main objective with any cutscene pointer manipulation is to ensure that no cutscene plays, in specific cases we can force unintended cutscenes to play. Common applications of this are to begin the final part of the Light Arrow Cutscene, or to start the credits, finishing the game.

Cutscene pointers on the actor heap

To be able to manipulate the value at a cutscene pointer, we need to first ensure that the cutscene pointer is in the actor heap. Any cutscene pointer which begins with 0x801 or 0x802 originates from an actor, and as such is in the actor heap whereas cutscene pointers which begin in 0x803 reside in scene data, and thus cannot be manipulated with the precision we need for a heap manipulation wrong warp to be done.

Storing existing cutscene data

Whenever you enter a scene all of the cutscenes defined in that scene are loaded into memory, and do not unload unless overwritten by something else. As such if there is a part of an existing cutscene we want to make use of we just need to enter the scene that cutscene is defined in, and then make our route such that the cutscene we want is never overwritten. A common order to do this is to load Hyrule Field, Kokiri Forest, Deku Tree, and then Ghoma's Room which will result in the hyrule field cutscene data staying loaded into memory.

Manipulating the value at the cutscene pointer

By manipulating the order in which actors load into memory we can force a bombchu to load in at the exact same point in memory as the cutscene pointer was. Then we ensure that link has either a negative or 0 Y coordinate, and then an angle which defines an offset to the stored point in memory, and then pulling out a bombchu at the same point in memory as the cutscene pointer will force our selected cutscene to play.

Cutscene Pointer Values (1.0)

The following table contains a list of version 1.0 address values that remain stored in the cutscene pointer (801CA208 in 1.0) after watching a given cutscene. Cutscene data may or may not exist at the address listed depending on a number of factors. It's also worth noting that CS pointer values can be effected in some cases depending on actions taken by the player.

CutsceneValue
Jabu Fish CS801E3F84
Prelude of Light Warp801E6680
Door of Time801E8CB0
Shadow Medallion801EC398
MS (Pull)801EF870
MS (Drop)801EFD20
Fire Medallion801F0104
MS (Pull)801F3990
MS (Drop)801F4320
Pedestal of Time801F4430
Ruto CS in Jabu Jabu801F7CA0 (can vary)
Spirit Medallion801FA618
Minute of Forest Warp80204370
Requiem of Spirit Warp802087B0
Bolero of Fire Warp8020E490
Nocturne of Shadow Warp8020E590
Serenade of Water Warp80210430
Deku Tree Meet80215FC0 (can vary)
Zelda Chase CS80362BF4
Game Intro80365080
OoT CS803662E0
ZL80368410
Goron Ruby80369FA0
DMT8036DD90
Hyrule Field8036E200
Water Medallion8036EB30
Nocturne of Shadow8036F620
Requiem803703B0
Hyrule Castle803703C0
Fire Arrows80370570
Drain Well803708C0
Lake Hylia80370F80
Silver Gauntlets80371A90
Kakariko Village80372D70
Desert Colossus80372E30
Serenade of Water803735C0
Minuet of Forest80373BA0
Saria's Song80375350
Epona's Song80375700
Zora's Sapphire80375FF0
Light Medallion803768D0
Gerudo Valley80376A00
Magic80376AB0
Farore's Wind80377D40
Zora Fountain80377D60
Double Magic80377D60
Learn Song of Time803783A0
Lon Lon Ranch80378730
Din's Fire80378C00
Prelude of Light80378F00
Double Defense80378F50
Bolero of Fire80379070
Nayru's Love80379B20
Gerudo Fortress8037AF90
Tower Collapse8037BAC0
Light Arrows8037C150
DMC8037C170
Kokori Emerald8037CAE0
Royal Family Tomb8037DD20
Nabooru Knuckle 18037E840
Zora Domain8037EED0
Temple of Time8037EFE0
Fairy Ocarina8037F220
Nabooru Knuckle 28037FC10
Graveyard8037FDC0
Goron Bracelet8037FF10
Forest Medallion80380110
Dispell Barrier80380C00
Zelda**80381064
Light Trial80381140
Fire Trial80381590
Forest Trial80381940
Spirit Trial80381CF0
Water Trial80382120
Wrong Song (Darunia)80382310
Rauru (Pre-LACS)80382330
Rainbow Bridge80382450
Deku Intro803825B0
Sun's Song80382780
Goron City80382930
ZL Skip80383484
Ganon's Castle80384090
Shadow Trial80384530
DMT Owl80384590
Lake Hylia Owl80384610
Song of Storms80384790
Jabu Intro803847A0
DC Intro803847C0

Last updated July 24, 2026 by Ellornn