Somaria Transition Corruption

From ALttP Speedrunning Wiki
Revision as of 14:56, 7 April 2019 by Kan (talk | contribs) (Effects)
Jump to: navigation, search

Somaria doors are a class of powerful glitches performed by pushing a block from the Cane of Somaria into a door transition.

Door types

Door types that can be somaria glitched
Direction Transition Type Glitchable?
North Supertile Normal Yes.svg
Auto Yes.svg
Subtile Normal Yes.svg
Auto Yes.svg
Auto→Normal Yes.svg
South Supertile Normal Yes.svg
Auto No.svg
Subtile Normal Yes.svg
Auto No.svg
Auto→Normal No.svg
East Supertile Normal Yes.svg
Auto No.svg
Subtile Normal Yes.svg
Auto No.svg
Auto→Normal Yes.svg
West Supertile Normal Yes.svg
Auto Yes.svg
Subtile Normal Yes.svg
Auto Yes.svg
Auto→Normal Yes.svg

Technique

North and West

North and west doors are easy to glitch as the farthest pixel inside of them is 1 pixel away from the transition. Simply snap as deep as Link can go then push a somaria block.

South and East

South and East doors are slightly more difficult to glitch, as the farthest pixel Link snaps to is 4 or 3 pixels away from the transition. Instead, Link must be positioned carefully to properly glitch the door:

Normal doors

  1. Door Juke to the snap position 2 pixels past the transition
  2. Pick up a somaria block and face out of the door
  3. Throw the somaria block
  4. While the somaria block is in the air, move 3-5 pixels (East glitching) or 2-4 (South glitching) back out of the door
  5. Tap the direction into the door to push the somaria block and glitch

As a reference when using the practice hack:

Door type Coordinates to look for
Farthest snap Farthest possible Snap after juke Most shallow glitchable Deepest glitchable
East (X coordinate; white number) xE8 xEA xF0 xEB xED
South (Y coordinate; yellow number) xE0 xE3 xE8 xE4 xE6

Auto doors

South-going autodoors cannot be glitched. An east-going subtile autodoor can be glitched if and only if the door on the other side of it is not an auto door.

  1. Use a bomb juke to snap past the transition
  2. Press ^ to face north then Y to place a somaria block on top of Link
  3. Briefly press > to push the block off of Link so that he can move
  4. Carefully tap v to move Link into position
  5. Press > to push the block and glitch the door

It is not possible to see Link while this is happening, making this type of somaria glitch the most difficult. It is important to get a feel for the inputs required.

The fmp method is to rhythmically tap >,v,>,v,>,v,>

Effects

North, South, East

See also: Overlay corruption

West

Subtile

Supertile

Supertile west somaria glitches are different from all others, namely because they set the game submodule to 0x04, running code related to opening and unlocking doors. They also overwrite data into the next room, but do not spoof new room data (such as chest items or pit flags). It is not possible to chain data swaps with west somarias.

Supertile west somarias cannot be properly explained without diving into the technical details of the memory a little bit. There are 2 words (2 bytes each) that we can control to effect different results:

  • $0690[0x2] - This address is essentially a timer for door animations
  • $068E[0x2] - This address holds information related to the last door Link attempted to unlock
$690
This is the more critical value of the glitch. When the door script is activated by the glitch, this address begins counting up until it reaches a value of 0x0010. If its value is between 0x0000 and 0x000F, the script will execute cleanly, and control of Link will be regained almost immediately. However, if the value is any higher (including the target value of 0x0010 itself), the game will count up until the value wraps around from 0xFFFF to 0x0000. Essentially, this is an 18 minute hardlock.
Fortunately, this value behaves in predictable ways that are controllable RTA.
  • After a hard reset, the value is 0x0000.
  • Opening a key door (big or small), solving a puzzle to open a shutter door, or opening a bomb wall in the underworld will settle the value at 0x0010.
  • Touching a big key door without the big key will set the value to 0x0000.
  • Transitioning through a subtile door will settle the value at 0x0004 unless:
  • If there are shutter trap doors in the same supertile as a subtile transition, the value will settle at 0x0010.
  • Transitioning through a supertile door will not change the value unless:
  • If the side of the room Link enters from has a shutter door (whether Link is using it or not), the value will settle at 0x0010.
  • Using the mirror on the same frame a key door is interacted with while having a key will set the value to 0x0000.
  • Using the mirror will otherwise not change the value.
  • Opening any of the big doors of Hyrule Castle or the Sanctuary will settle the value at 0x0003.
  • Regardless of what's underneath, lifting large rocks and breaking bonk rock piles will increment the value by 1.
  • Opening the grave to the sewers, the grave to king's tomb, or solving the hammer pegs puzzle for the first time will increment the value by 1.
$68E
This value controls which door will be opened when the script executes. While the distinction is ultimately unimportant, each door has 4 possible values corresponding to it, based on the side of the door Link is on and whether he is facing the door or perpendicular to it.
This value also behaves in a predictable fashion that can be controlled RTA.
  • Slashing any closed door (key doors, big key doors, shutter doors, bomb doors) will set the value to one that corresponds to the door.
  • Opening a key door, big key door, or bomb wall will set the value to one that corresponds to the door.
  • Attempting to open a big key door without the key will set the value to one that corresponds to the door, as if it were opened.
  • Opening or closing a shutter door will settle the value to 0x0016.
  • All subtile transitions will settle the value to 0x0016.
  • Supertile transitions will leave the value alone unless:
  • If the side of the room Link enters from has a shutter door (whether Link is using it or not), the value will be set to 0x0016.
  • Using the mirror will not change the value.
  • Using staircases will not change the value.
There are some unusual consequences with the doors that get opened by this glitch:
  • Subtile shutter doors will stay opened permanently, even after mirroring or saving and quitting. They also will not close behind you when they are used. If something else prompts the shutter door to open or close, it will revert to normal behavior.
  • If the other side of a subtile door shutter door is a normal door (for example, the shutter doors in the Misery Mire big chest supertile), it will become an auto door while the shutter door is stuck open.
  • If the current value of $068E[0x2] doesn't correspond to an existing door in the supertile, a glitched door that cannot be reached may appear in the northwest corner of the super tile. If out-of-bounds cheats are used to travel through the door, it usually leads to a black screen that may or may not resolve. In some tiles (e.g. Sahasrahla's house), however, it immediately takes Link to the overworld.