Difference between revisions of "Mothula"

From ALttP Speedrunning Wiki
Jump to: navigation, search
(can't believe I never finished that sentence)
 
(5 intermediate revisions by the same user not shown)
Line 16: Line 16:
 
== Elements of the fight ==
 
== Elements of the fight ==
 
=== Mothula ===
 
=== Mothula ===
Mothula has 4 main AI routines:
+
Before the fight, Mothula sits around, then she gets up. From there on, she alternates between shooting and moving.
# Sit around
 
# Rise
 
# Flap around
 
# Shoot beams
 
  
The first 2 routines are used for the opening before the fight. From there on, the routines alternate between flapping and shooting.
+
Spike blocks are spawned with a routine that's outside of Mothula's main AI, so they are completely independent of what she is currently doing.
  
Spike blocks are spawned with a routine that's outside of Mothula's main AI.
+
When taking a hit, Mothula's beam countdown will be set to 64 frames and she will immediately begin moving if she was firing beams. Taking a hit does not change Mothula's movement cycle. When recoiling from damage, she is not immune to further attacks for 10 frames. During this time, she can hit a spike to recoil again and have that damage overwritten by Link's attacks. Or vice versa, she can have Link's attacks overwritten by a spike. When Mothula is able to recover from recoil successfully, she will be properly immune to attacks for 32 frames.
 
 
; Main AI
 
# Check vulnerability for a value greater than 0
 
# Mothula deals with recoiling in a very weird way (see below)
 
# Mothula's invulnerability lasts 32 frames. When taking a hit, she will switch to '''flap around''' mode and the beam countdown will be set to 64 frames. Taking a hit does not change Mothula's movement cycle.
 
  
 
; Flap around
 
; Flap around
# Check the beam timer. If it's time to shoot, set the main do stuff timer to 63 and jump to the shoot routine
+
# Check the beam timer.
 +
#: If it's time to shoot, sit still for 63 frames to shoot beams.
 +
#: After shooting, choose a random number between 64 and 95 for the beam timer.
 
# Flap wings
 
# Flap wings
# Increase or decrease altitude, as determined
+
# Increase or decrease altitude, as determined by how flappy Mothula feels
 
# There is a repeated cycle of movements with a period of 8:
 
# There is a repeated cycle of movements with a period of 8:
 
#: For 7 movements: move in random direction for between 31 and 95 frames
 
#: For 7 movements: move in random direction for between 31 and 95 frames
 
#: For the 8th movement: move towards Link for 128 frames
 
#: For the 8th movement: move towards Link for 128 frames
#: For any movement, if Mothula hits a wall, the movement timer immediately ends
+
#: For any movement, if Mothula hits a wall, her movement timer immediately ends
 
 
; Shoot beams
 
# Wait around for the movement timer (which should be 63 frames from flapping around)
 
# Also be shooting
 
# Set the AI routine back to flapping and choose a random number between 64 and 95 for the new beam timer.
 
  
 
; Spikes
 
; Spikes
Spikes attempt to spawn from a random position every 64 frames. Spawns will fail if there is no spike tile on the chosen point or if there are too many sprites.
+
Spikes attempt to spawn from a random position every 64 frames. Spawns will fail if there is no spike tile on the chosen point or if there are too many sprites. When chosen, the decided spike will turn into a sprite and wiggle for 64 frames. When it's done wiggling, it will accelerate to its maximum speed of 2px/f towards the other side of the room. When it reaches the other side of the room, it will sit for another 64 frames, then travel to its original location at 1px/f. When it reaches its original location, it will turn back into a tile.
  
 
; Floor
 
; Floor
Line 52: Line 40:
  
 
The floor stops moving as soon as Mothula starts exploding.
 
The floor stops moving as soon as Mothula starts exploding.
 
; Recoiling (complicated mess)
 
When Mothula is hit, standard recoil code checks the velocity of the recoil and, if it's too high, sets the value to {{HEX2|90}}, or {{BIN|1001 0000}} in binary. The next frame, Mothula has this line of code to run:
 
<pre>
 
AND.b #$7F : CMP.b #$06 : BNE .early_recover_delay
 
</pre>
 
 
The value {{HEX2|7F}} is equal to {{BIN|0111 1111}} in binary, so ANDing it with {{HEX2|90}} ({{BIN|10011111}}) is now using the value {{BIN|0001 1111}}, or {{HEX2|10}}. When that timer reaches {{HEX2|06}}, Mothula recovers from recoil, but before then, the instruction that sets Mothula's immunity timer to 32 frames is skipped. The check for recoil function is not called until near the end of Mothula's main routine. The beginning of the routine has an instruction that removes Mothula's immunity to damage, and the middle is where that immunity is set, when applicable. Combined, these create a logical execution of instructions that guarantees this short period of no immunity on a first hit.
 
  
 
== Strategy ==
 
== Strategy ==
Line 75: Line 55:
 
Individual Mothula Pattern Tutorials by Xelna
 
Individual Mothula Pattern Tutorials by Xelna
  
 +
* {{Youtube|Up|v=BwpdZgZLFkM}}
 
* {{Youtube|Down|v=fJQGwdtZtvo}}
 
* {{Youtube|Down|v=fJQGwdtZtvo}}
* {{Youtube|Up|v=BwpdZgZLFkM}}
 
 
* {{Youtube|Left|v=VFjwRvsZlPA}}  
 
* {{Youtube|Left|v=VFjwRvsZlPA}}  
 
* {{Youtube|Right|v=oDSMz88yCzQ}}
 
* {{Youtube|Right|v=oDSMz88yCzQ}}
Line 85: Line 65:
 
* {{Youtube|Andy's NMG Tutorial|v=CYF5JuhWYLE|t=3h32m38s}}
 
* {{Youtube|Andy's NMG Tutorial|v=CYF5JuhWYLE|t=3h32m38s}}
 
* {{VOD|Runnerwatcher's NMG Tutorial|v=41763488|t=01h00m09s}}
 
* {{VOD|Runnerwatcher's NMG Tutorial|v=41763488|t=01h00m09s}}
* {{Youtube|LTTP4HTTP Fastest Mothula|v=2pPKKX1rqDU}}
 
  
 
{{List of bosses}}
 
{{List of bosses}}

Latest revision as of 15:48, 20 August 2019

Mothula
Mothula.png
LocationSkull Woods
HP32Icon Bow.png-Icon Silver Bow.png-
Icon L1 Sword.png2Icon Cane of Somaria.png2Icon Cane of Byrna.png2
Icon L2 Sword.png4Icon Fire Rod.png4Icon Ice Rod.png-
Icon L3 Sword.png8Icon Hammer.png8Icon Bombs.png-
Icon L4 Sword.png-Icon Boomerang.png-Icon Hookshot.png-
Icon Bombos.png-Icon Ether.png-Icon Quake.png-
Icon Green Mail.png
Hit-8.pngHit-8.png
Icon Blue Mail.png
Hit-8.png
Icon Red Mail.png
Hit-4.png
ArrghusBlind

Tiny Moth Dik

Elements of the fight

Mothula

Before the fight, Mothula sits around, then she gets up. From there on, she alternates between shooting and moving.

Spike blocks are spawned with a routine that's outside of Mothula's main AI, so they are completely independent of what she is currently doing.

When taking a hit, Mothula's beam countdown will be set to 64 frames and she will immediately begin moving if she was firing beams. Taking a hit does not change Mothula's movement cycle. When recoiling from damage, she is not immune to further attacks for 10 frames. During this time, she can hit a spike to recoil again and have that damage overwritten by Link's attacks. Or vice versa, she can have Link's attacks overwritten by a spike. When Mothula is able to recover from recoil successfully, she will be properly immune to attacks for 32 frames.

Flap around
  1. Check the beam timer.
    If it's time to shoot, sit still for 63 frames to shoot beams.
    After shooting, choose a random number between 64 and 95 for the beam timer.
  2. Flap wings
  3. Increase or decrease altitude, as determined by how flappy Mothula feels
  4. There is a repeated cycle of movements with a period of 8:
    For 7 movements: move in random direction for between 31 and 95 frames
    For the 8th movement: move towards Link for 128 frames
    For any movement, if Mothula hits a wall, her movement timer immediately ends
Spikes

Spikes attempt to spawn from a random position every 64 frames. Spawns will fail if there is no spike tile on the chosen point or if there are too many sprites. When chosen, the decided spike will turn into a sprite and wiggle for 64 frames. When it's done wiggling, it will accelerate to its maximum speed of 2px/f towards the other side of the room. When it reaches the other side of the room, it will sit for another 64 frames, then travel to its original location at 1px/f. When it reaches its original location, it will turn back into a tile.

Floor

Conveyors move in a random direction for between 96 and 223 frames. Before choosing a new random direction, the floor will sit still for 32 frames. (Technically, the floor's timer is between 128 and 255 frames, but the wait period has been factored out.)

The floor stops moving as soon as Mothula starts exploding.

Strategy

Josh's Mothula Tutorial is excellent. You should watch it.

  • You can start the fight by hitting Mothula twice every time. This can be done by either dashing into the block on top of the screen right as she's getting vulnerable, or by doing a prolonged Pokedash.
  • Since Link lands in the same place every time, and the conveyors can only go in one of four different directions, it's possible to find visual and movement cues to get the double hit no matter what. This takes a lot of practice.
  • You can hit her into a block tile to damage her.
  • As long as the conveyors aren't going downwards, you can usually get off a Pokedash when she's camping near the spikes at the top. This is a fairly advanced strategy to go for and requires a lot of practice.
  • When Mothula is in the middle on the left or right side, try to get below her and slash her upwards. If you slash her from a diagonal in this situation, she might bounce into the spikes, but being below her in the middle should work.
  • The best way to deal with the moving spikes is to practice the double hit, and pokedash.. The faster you kill her, the less of a problem they will be.
  • There is a lot of pattern recognition to this fight. You will have to do the fight hundreds of times in practice to get a feel for what works and what doesn't work. Good luck!

Individual Mothula Pattern Tutorials by Xelna

External resources