Ancilla glitches

From ALttP Speedrunning Wiki
Revision as of 14:33, 27 August 2021 by Kan (talk | contribs)
Jump to: navigation, search

This page explains glitches that has to do with ancilla.

For now, go to for the also-ancilla-related glitch that was found in 2018. This page is a summary of the glitches found mid 2019.

In this game, we use the word ancilla (plural: ancillae) for objects that Link produces/uses. Some examples are Boomerang, Bombs, Somaria block/spark, Sword spark, and Boots dust.

Enemies, Heart drops, etc... on the other hand, are sprites.

Types

Ancillae are a broad category, so this page only covers the broad overview.

Specific types of ancilla-related glitches:

History

Yuzuhara found that using items in certain combinations created weird effects, like getting two somaria blocks/bombs, having bombs explode indefinitely etc. He did not understand how it worked, and it was mostly not known about in the Discord at the time, but he posted everything on his twitter account here

Someone mentioned it on Discord after 4-5 months had passed, and the videos were linked into Discord. We started looking more in depth on what was happening, and this investigation produced a few new glitches. All of them having something to do with Ancillae.

Terminology

Ancillae & Slots

An ancilla is "A self-acting entity whose routines and existence are established and controlled from the 10 item array at $0C4A." Broadly speaking, these are going to be objects that are spawned by Link's items. Bombs, arrows, the boomerang, fire and ice rod shots, the dust Link kicks up while dashing, etc. -- These are all ancillae.

There are 10 positions in the game's memory for ancillae, and we call these Slots. For practical reasons, we name/number them Slots 0-9.

Front and Back Slots

Ancillae won't just choose whichever open slots to occupy. They can be broadly classified into Front Slot Ancillae (these occupy the first 5 slots: Slots 0-4) and Back Slot Ancillae (these occupy the final 5 slots: Slots 5-9). Front Slot Ancillae are generally significant objects in gameplay. Ancillae that load here will be things like Bombs, Arrows, Somaria Blocks, Sword Beams, Dash Dust, etc. Back Slot Ancillae are less significant to gameplay, often being objects that just add a bit of visual flare. Back Slot Ancillae include things like the sparkles that appear on Link's sword when he's charging a spin attack or the sparkles that appear on a shot from the Ice Rod.

Particle Ancillae

Arrows that are stuck in a wall, the sparkles that appear with an Ice Rod shot, and the sparkles that appear with a Silver Arrow, the Red Boomerang, or when Link is charging his sword are all what we call Particle Ancillae. A key attribute of Particles that differentiates them from other ancillae is that they can be replaced. This is an important factor in ancillae glitches, as we'll see below.

Search Index

The Search Index is what we call value at $03C4 in the game's memory. It determines where to begin a secondary search if the game can't find an open Slot to place a new ancilla. The exact logic that happens with the Search Index is important, so let's look at the steps:

  1. You go to use a Front Slot ancilla, but Slots 0-4 are already filled. What does the game do now?
  2. Decrement the value of the Search Index by 1.
  3. If the Search Index is now negative, set it to the quota of the ancilla we're trying to place, minus one (ie. we can have two bombs on screen at the same time, meaning the quota for bombs is 2 and also meaning that if this step was run while we're trying to place a bomb, the resulting Search Index value would be 01)
  4. Now the game looks at the Ancilla Slot corresponding to whatever the Search Index value is. It will search from this Slot down to Slot 0 looking for Particle ancillae it can overwrite with the ancilla we're trying to use. If it finds one, it will replace it, and the Search Index will be set to the value of whichever Slot this replacement was done at. If not, the new ancilla won't be loaded in and the Search Index will now be decremented all the way to 00.

To look at an example:

  1. We try to place a Somaria block, but Slots 0-4 are filled with [bomb, bomb, wall arrow, boomerang, dash dust]. Our Search Index is at 04
  2. The Search Index is decremented to 03.
  3. The Search Index is not negative, so this step isn't used.
  4. Our Search Index is 03, so the game looks at Slot 3, where there's a Boomerang. That's not a particle, so the search moves down the list. At Slot 2 is a wall arrow. Hey that's a particle ancilla. The game will despawn that and load our Somaria block in its place. Our Search Index is now 02.

In addition to checking for available Slots for ancillae, there is another routine the Search Index is involved in, and it has to do with Wall Arrows. If the player tries to create more than 3 wall arrows on-screen, the Search Index will be set to 04, and the index will decrement as the game looks for Wall Arrows to replace with the new Wall Arrow.