A Link to the Past

Frame Rule

A frame rule is a set of logic used to constrain the number of actions to a specific period of recurrence. Frame rules come in 3 main classes: strict, staggered, and personal.

Types

Strict frame rules

Strict frame rules are ones that follow the game's main frame counter exactly. Actions that use the same strict frame rule will always be able to sync up, if they are to be performed together.

An example of a strict frame rule is gibdo turning, which always happens every 8 frames when the main frame counter is a multiple of 8.

Staggered frame rules

Staggered frame rules are ones that follow the game's main frame counter and another value. Almost all sprite interactions to damage Link and all ancilla interaction with sprites are on a staggered frame rule. In these cases, the secondary value used is the index of the sprite or ancilla. First, the index is exclusive OR'd with the main frame counter. If the bottom 2 bits of the new value are 0, then the interaction check proceeds.

This table shows how the sprite slow determines the offset for the most common frame rule—interacting with Link. Slots that share a column are slots that are on the same frame rule.

4n + 04n + 14n + 24n + 3
0123
4567
891011
12131415

The damage check to Link is often worded as "Link can only take damage 1/4 frames," but this isn't true. Any single sprite can only damage Link on 1 in 4 frames, but Link can potentially be damaged on any frame if there are 4 nearby enemies whose sprite slots are spread across the 4 frame rules.

Personal frame rules

Personal frame rules are ones that follow a timer exclusive to whatever is performing the action. An example of a personal frame rule is with buzzblobs, which dance around when buzzing based on their buzzing timer.

Practicing rooms with frame rule dependencies

It's common for rooms or strats to have some variance based around frame rules. Sometimes you may want to isolate a specific frame rule to work on. For example, in the Desert Palace big key room, the cannon shooters are on a 32 frame cycle. As part of that cycle, there are 4 frames where you'll get a pattern where the two shooters fire out of sync. If you wanted to practice this normally, you'd just have to load the room and try over and over for something that only happens 1/8 times. But if you could control the frame rule you're on, you could force only that pattern to occur. Fortunately, the practice hack lets you do just this, although the way it's done is not completely intuitive. So this section will explore some ideas you can use when working on rooms where frame rules are a factor.

Just wing it with savestates

In the practice hack's menu, you can go to RNG Control and then to Frame Rule, and you'll see you're able to manipulate the value around. This value is wired to the game's internal frame counter stored at the memory address $1A. If you set the frame rule value in the practice hack, then every time you load a savestate or a preset, the value you set in the menu will be written to $1A.

So a basic way to practice this kind of room woulbe to transition to it, make a savestate, and then tinker around with the frame rule value until you find one that works. Because the value will be reset to whatever you've defined on every savestate load, the room will be in a consistent state every time you reload.

The disadvantage of this is having to go through the process to hunt and peck for the exact pattern you're looking for. Can we do better? Yes!

Presets

If the room you're looking at has a preset before it, you can choose to load from the preset instead of a savestate. The nice thing about this is that the presets are the same for everyone, and they'll be the same tomorrow as they are today. So someone in the community can map out that XX frame rule values result in YY room patterns when loading from a preset, and this will be true for everyone assuming they hold into the room transition after loading the preset. This can cut down on the work involved with having to relocate patterns all the time like you'd have to do if you were just using savestates.

An example of this is with the earl tile shatters in Hera Tile Room. Because that room has a preset before it, someone can research what value to set the frame rule to where the strat will be guaranteed to work from preset load. And at least for that room, someone has already done that work.

The practice hack also features a shortcut to load the last used preset. By default it's Select + B + L.

Lite states

But what if the room you're looking at doesn't have a preset in front of it? Well, then you can use a practice hack feature called lite states. These are essentially custom presets that you can make for yourself, and they can be used similarly to presets. The big difference is that, at least if you're going to get community-shared solutions where everyone can be on the same page, you'll need to communicate what position Link needs to be in when the lite state is created. If you don't do this, then players' starting positions after loading may vary, meaning they'll have different frame counts and variable results from each other.

An example of a lite state setup is with Ganon Ball Z in Ganon's Tower. By creating a lite state in the spike pit room with Link standing on X: 01C8,Y: 0A78, you can use a mapping that's already been researched to target any specific pattern in the room.

Last updated September 20, 2026 by joshRTA