Chest SRM

Discovered in OoT by GlitchesAndStuff

Inside every chest actor (En_Box, 0x6), there is a 16-bit value at Offset 0x21E used to index the Get Item Table (located at 0x779884 on US 1.0). This value is manipulable with the Facing Angle (Offset 0xBE) of a stale reference, assuming the reference allocates 0x160 higher than the chest. Through this, we are able to obtain any item in the game from the chest.

The Get Item Table

The Get Item Table has 6 byte entries, and determines which item Link should receive (Byte 0), whether it should be replaced with a blue rupee (Byte 1), the 3D model (Byte 2) and text (Byte 3) that should be displayed, as well as the object file to load (Byte 4-5). If the index to this table is 0x00, Link will pick up the chest. If it's 0x01-0xB9, it will use a valid entry in the table. Anything other than this will index past the bounds. In either of the last two cases, we are able to acquire items other than the usual item that would be in the chest.

The table for both the JP and US versions was made into a spreadsheet by Exodus.

Proof of Concept

Discovered by Türkenheimer

By manually finding a heap manipulation using trial-and-error, it was possible to make the purple rupee chest Beneath the Graveyard contain some other item based on the angle of the stale reference. In this video it was used to obtain a glitched version of the All Night Mask.

Notice how Link superslides into the wall for a long time. This was actually intentional, since the heap manipulation relied on there being no smoke allocated when entering the next room. Using a bomb to start a superslide allocates smoke, so it was necessary to wait several seconds for that to deallocate. Conveniently, Beneath The Graveyard has a wall that's gently sloped at a perfect angle for it to greatly slow down (but not entirely halt) our superslide through the loading plane. This technique was later affectionately dubbed the "snailslide".

Negative Get Item Indices

Discovered by Exodus

Setting the chest to have a negative index to the Get Item Table causes you to get the item by walking in front of the chest without having to open it.. This allows you do to SRM multiple times on one chest. The negative version of a 16-bit two's complement number can be obtained by simply subtracting it from 0x10000. So for instance, 0x10000 - 0x43 (Pictograph Box) = 0xFFBD.

Heap Manip Chaining

Discovered by fullgrowngaming

By taking into account the state of the actor heap from a previous manipulation, it was possible to do multiple heap manips in succession, thus saving the time that would otherwise be required to reload the area. Note that this only works if the game doesn't think you actually opened the chest. This can be achieved using negative Get Item Indices.

Any Item with Chest SRM (using collision angle)

Discovered by SeedBorn

Previously, we were limited to whatever was in the Get Item Table, which, while it had many items in it, did not have everything. Fortunately, due to the 16 bit index, we are able to index far past the bounds of this table into an unintended region of memory. Most of this data is static and doesn't give terribly interesting items (most frequently ocarina of time and light arrows). Fortunately a few chunks of data are actually manipulable. One such chunk was dependent on the camera angle and the analog stick angle, but a much more convenient field to manipulate was found in the collision angle, which is entry 0x1134 of the Get Item Table (when allowed to overflow).

The collision angle is manipulable by getting a certain facing angle, and then colliding with a wall of some other angle. The collision angle will be the difference of the two. Like any other angle in Zelda 64, this is a 16-bit integer, which means that it will control the item Link receives, and whether it should be replaced with a blue rupee. The remaining 4 Bytes following the collision angle are all conveniently 0, which means no 3D model will be shown, textboxes will be empty, and most importantly, no crashes will occur.

The first Byte must be the item ID of the desired item. The second Byte on the other hand can be nearly anything. The only constraint is that it must not include the 0x20 bit for an item you already have (songs check the ocarina slot, so this case includes them assuming you have ocarina), and that it must not include the 0x40 bit for an item with an empty slot, otherwise you will be given a blue rupee instead.

Note that it's only possible to acquire collision angles up to 0x8000, meaning that items 0x81 to 0xFF are unobtainable. Fortunately on US, none of these items are useful, but on JP, all the songs are in this range. As such, US is better for chest SRM when using collision angle.

Snailslideless Heap Manip

Discovered by Imbued, fullgrowngaming

A heap manip that expected smoke to still be loaded when entering the new room enabled skipping the snailslide. This manip was found using a heap simulator Imbued wrote, ending the era of finding all our heap manipulations manually. Furthermore, the only item needed for the manip was bombs, which enables doing Chest SRM much earlier in the game.

Oceanside, Deleting Ocarina, and Timestop

Discovered by Imbued

A heap manipulation was found to do Chest SRM in Oceanside Spiderhouse instead of Beneath the Graveyard. This has one distinct advantage. The chest gives you a "special" item (in this case a Heart Piece, could also work with masks or inventory items, etc) unlike the chest Beneath Graveyard which only gives a purple rupee.

Chests such as this enable you to "open" the chest and get the item inside without really opening it if you're in timestop. This enables you to open the chest indefinitely many times. When used in combination with collision angle, this enables getting as many items as you wish from a single heap manip.

However, there's a cost. Opening a large chest, but getting a small chest animation (typically for items you already have) will zero your collision angle before the chest actually opens and you receive the item. This means you'll only be able to get Ocarina which is item 0x00.

You can force a large chest animation by simply not having an item in the slot the game is checking. For songs, the game checks your Ocarina slot. So by deleting your Ocarina, it's possible to acquire songs from the chest while viewing a large chest opening animation. These animations are slower, but do not zero your collision angle prior to the chest fully opening, enabling you to actually receive the desired item. Fortunately, there's a few entries before the Get Item Table (0xFFAF, 0xFF5C, and 0xFF4D on US 1.0) used by the game specifically for the purpose of deleting your Ocarina. So we can simply do an negative angle setup to reach one of these, then open the chest.

Observatory Chest SRM

Discovered by fullgrowngaming, Imbued

Up until this point, we'd been caught between two conflicting desires. We wanted a chest that gives a "special" item (enabling us to timestop it), but also a small chest such that we can acquire songs using collision angle without first deleting Ocarina. There originally didn't seem to be any such chest, but it was eventually discovered that the chest in Bomber's Hideout (often referred to as "Observatory Chest") actually meets both criteria! And conveniently it's also in the closest scene to Clock Town that has all the necessary ingredients to do Superslide Carry SRM in (a loading plane and a grabbable actor).

Fullgrowngaming found the heap manipulation for Observatory Chest SRM using a heap simulator he wrote called Project Oceanside. Now the MM community has two separate heap simulators.

Fullgrowngaming also found a fast setup for getting the requisite 0x1134 angle for making the chest read its item contents from Link's collision angle.

Imbued found a setup for a consistent (and useful) camera angle to acquire timestop at.

Graveyard Chest SRM

Discovered by fullgrowngaming

Not to be confused with Beneath the Graveyard Chest SRM, the first place discovered to do Chest SRM in MM, it's also possible to SRM the Captain's Hat chest in Graveyard. This chest would be possible to timestop (due to containing a special item) if the fire ring was down (though achieving that would require watching a long cutscene). Note however that since this is a large chest, you'd have to delete Ocarina before acquiring any songs with collision angle, just like in Oceanside Spiderhouse. As such, this chest is more useful for one-off SRMs like Large Quiver once you've already acquired Bow from source in 100%.

Spring Mountain Village Chest SRM

Discovered by Imbued

It is also possible to Chest SRM with the red rupee chest behind the waterfall in Spring Mountain Village. This is convenient in 100% for acquiring large quiver after you've already obtained Bow from source. Note however, that it is not possible to timestop this chest, due to it being a mundane red rupee chest. It is small though, so we could acquire a song with collision angle without having to delete Ocarina first if so desired.

Better Camera Angle Setup for Observatory Chest Timestop

Discovered by Imbued

This setup gives a 0x3DDF or 0x3DE0 camera angle which makes the setups for acquiring many useful items quite fast.

Last updated 11/10/2020 – Exodus