- Created detailed documentation for the Kydrog Boss sprite, outlining its phases, behaviors, and mechanics. - Added analysis for the Manhandla sprite, including its transformation into Big Chuchu and phase management. - Documented the Octoboss sprite, highlighting its unique mechanics and interactions with a "brother" Octoboss. - Provided an overview of the Twinrova boss sprite, detailing its transformation and phase-based attacks. - Included analysis for the Vampire Bat mini-boss, emphasizing its enhanced behavior compared to standard Keese. - Documented the Wolfos mini-boss, focusing on its integration into a mask quest and unique pacification mechanics.
5.2 KiB
5.2 KiB
Wolfos Mini-Boss Sprite Analysis
Overview
The wolfos sprite (ID: Sprite_Wolfos, which is $A9) functions as a mini-boss or special enemy. It engages Link in combat with various movement and attack patterns. A key aspect of this sprite is its integration into a mask quest, where it can be subdued and, under specific conditions, grants Link the Wolf Mask.
Key Properties:
- Sprite ID:
Sprite_Wolfos($A9) - Description: A mini-boss/special enemy that fights Link and is part of a mask quest.
- Number of Tiles: 4
- Health:
30(decimal) - Damage:
00(Damage dealt to Link is likely handled by its attacks.) - Special Properties:
!Boss = 00(Not marked as a boss, but functions as a mini-boss/special enemy.)!ImperviousArrow = 01(Impervious to arrows.)
Custom Variables/Macros:
WolfosDialogue = SprMiscD: Stores a flag to control Wolfos dialogue.Wolfos_AnimateAction = SprMiscE: Stores the current animation action.AttackForward(),AttackBack(),WalkRight(),WalkLeft(),AttackRight(),AttackLeft(),Subdued(),GrantMask(),Dismiss(): Macros for settingSprActionandWolfos_AnimateAction, improving code clarity.!NormalSpeed = $08,!AttackSpeed = $0F: Constants for movement speeds.
Main Logic Flow (Sprite_Wolfos_Main):
The Wolfos's behavior is governed by a state machine:
Wolfos_AttackForward(0x00),Wolfos_AttackBack(0x01),Wolfos_WalkRight(0x02),Wolfos_WalkLeft(0x03),Wolfos_AttackRight(0x04),Wolfos_AttackLeft(0x05): These states manage the Wolfos's movement and attacks. They callWolfos_Moveand can randomly trigger attack actions with increased speed and temporary imperviousness.Wolfos_Subdued(0x06): In this state, the Wolfos stops moving, displays dialogue ($23), and waits for Link to play the Song of Healing (SongFlag = $01). If the song is played, it transitions toWolfos_GrantMask.Wolfos_GrantMask(0x07): Displays the Wolfos mask graphic, shows a message ($10F), grants Link theWolfMaskitem, and transitions toWolfos_Dismiss.Wolfos_Dismiss(0x08): Stops moving, kills the sprite, and clears Link'sBRANDISHflag.
Initialization (Sprite_Wolfos_Prep):
- Checks if Link is outdoors (
$1B). If so, it further checks if the Wolfos has already been defeated ($7EF303 = $01). If defeated, the sprite is killed to prevent respawning. - Sets initial timers (
SprTimerA = $40,SprTimerC = $40). - Configures deflection properties (
SprDefl = $82, making it impervious to arrows). - Sets
SprNbrOAM = $08and initializesSprMiscG, XandSprMiscE, Xto0.
Defeat Check (Sprite_Wolfos_CheckIfDefeated):
- Checks if Link is outdoors. If
SprHealth, Xdrops below$04, the Wolfos is considered "defeated." - Upon defeat, it sets
SprAction = $06(Wolfos_Subdued),SprState = $09(normal state, avoiding a full death animation), refills its health to$40, and clearsWolfosDialogue. This indicates pacification rather than outright killing.
Movement (Wolfos_Move, Wolfos_DecideAction, Wolfos_MoveAction_Basic, Wolfos_MoveAction_CirclePlayer, Wolfos_MoveAction_Dodge):
Wolfos_Move: Handles damage flash, checks damage from player, prevents player from passing through, bounces from tile collision, checks for recoiling, moves the sprite, and callsWolfos_DecideAction.Wolfos_DecideAction: Determines the Wolfos's next movement action based on timers and random chance. It uses a jump table to select betweenWolfos_MoveAction_Basic,Wolfos_MoveAction_CirclePlayer, andWolfos_MoveAction_Dodge.Wolfos_MoveAction_Basic: Basic movement towards or away from Link based on distance.Wolfos_MoveAction_CirclePlayer: Attempts to circle the player.Wolfos_MoveAction_Dodge: Dodges by applying speed towards the player.
Animation (Sprite_Wolfos_Animate):
- This routine is called from
Sprite_Wolfos_Main. - It uses
Wolfos_AnimateAction(stored inSprMiscE, X) to determine which animation to play. - It has separate animation routines for
AttackForward,AttackBack,WalkRight,WalkLeft,AttackRight,AttackLeft, andSubdued. - It also spawns sparkle garnishes (
JSL Sprite_SpawnSparkleGarnish).
Drawing (Sprite_Wolfos_Draw):
- Uses standard OAM allocation routines.
- Handles animation frames, x/y offsets, character data, properties, and sizes for drawing the Wolfos.
- Includes a special frame for the Wolf Mask (
$CC) when granting the item.
Discrepancies/Notes:
- Mask Quest Integration: The Wolfos is directly integrated into a mask quest, where playing the Song of Healing subdues it and leads to receiving the Wolf Mask.
- Health Refill on Defeat: When defeated, its health is refilled to
$40, and its state is set toWolfos_Subdued, indicating it's not truly killed but rather pacified. - Hardcoded Values: Many numerical values for timers, speeds, and offsets are hardcoded. Replacing these with named constants would improve readability and maintainability.
JSL Link_ReceiveItem: This is a standard function for giving items to Link.JSL Sprite_SpawnSparkleGarnish: This is a generic garnish spawning function.