- Created detailed documentation for the Minecart sprite, outlining its properties, constants, collision setup, main logic, and design patterns. - Added documentation for the Pedestal sprite, including its vanilla overrides, custom logic for item interaction, and event triggering based on area context. - Introduced documentation for the Portal sprite, detailing its two-way warping system, initialization, main logic, and helper routines for seamless transitions. - Documented the Switch Track sprite, explaining its interactive behavior, state-based animation, and integration with external switches for dynamic track manipulation.
6.0 KiB
6.0 KiB
Manhandla / Big Chuchu Sprite Analysis
Overview
The manhandla sprite (ID: Sprite_Manhandla, which is $88) is a multi-phase boss. It begins as Manhandla, a multi-headed plant-like enemy, and upon the defeat of its individual heads, it transforms into a Big Chuchu. This design creates a dynamic and evolving boss encounter.
Key Properties:
- Sprite ID:
Sprite_Manhandla($88) - Description: A multi-phase boss that transforms from Manhandla to Big Chuchu.
- Number of Tiles: 3
- Health:
00(Health is managed by its spawned heads in the first phase and then by its ownSprHealthin the second phase.) - Damage:
00(Damage dealt to Link is likely handled by its heads or spawned projectiles.) - Special Properties:
!Boss = 01(Correctly identified as a boss.)!DeathAnimation = 01(Indicates custom death handling rather than a standard animation.)!Hitbox = 00
Custom Variables:
Offspring1_Id,Offspring2_Id,Offspring3_Id: Global variables used to track the sprite indices of the spawned Manhandla heads.
Main States/Actions (Sprite_Manhandla_Main Jump Table):
The boss's behavior is governed by a detailed state machine across its phases:
Manhandla_Intro(0x00): Initial state. Spawns the three Manhandla heads (SpawnLeftManhandlaHead,SpawnRightManhandlaHead,SpawnCenterMandhandlaHead) and transitions toManhandla_Body.Manhandla_FrontHead(0x01),Manhandla_LeftHead(0x02),Manhandla_RightHead(0x03): These states are likely executed by the individual Manhandla head child sprites, managing their movement, damage, and contact with Link.BigChuchu_Main(0x04): The primary state for the Big Chuchu phase. Handles movement, damage, and can spawn Chuchu blasts.Flower_Flicker(0x05): A transitional state that flickers the background (BG2) and spawns a newSprite_Manhandla(withSprSubtype = $08, representing the Big Chuchu head) after a timer, as part of the transformation.Manhandla_Body(0x06): The main state for the Manhandla body. Handles movement, damage, updates the positions of its spawned heads, and can spawn Mothula beams.BigChuchu_Emerge(0x07): Manages the emergence animation of the Big Chuchu.BigChuchu_Flower(0x08): A state for the Big Chuchu, possibly related to its visual appearance or an attack.BigChuchu_Dead(0x09): Handles the death sequence of the Big Chuchu.ChuchuBlast(0x0A): Manages the movement and damage of the spawned Chuchu blast projectile.
Initialization (Sprite_Manhandla_Prep):
- Sets initial movement speeds and enables BG1 movement.
- Configures deflection properties (
SprDefl = $80). - Sets initial health to
$80. - Initializes
SprAction, Xbased onSprSubtype, X.
Phase Transition and Death Check (Sprite_Manhandla_CheckForNextPhaseOrDeath):
This critical routine orchestrates the boss's transformation:
- It checks if all three Manhandla heads (
Offspring1_Id,Offspring2_Id,Offspring3_Id) are dead. - If all heads are defeated, it triggers the transition to the Big Chuchu phase:
- Sets
SprMiscD, X = $01(phase flag). - Refills health (
SprHealth = $40). - Adjusts OAM entries (
SprNbrOAM = $08). - Sets
SprAction = $07(BigChuchu_Emerge).
- Sets
- It also manages the Big Chuchu's defeat, transitioning to
BigChuchu_Deadwhen its health drops below$04.
Head Spawning (SpawnLeftManhandlaHead, SpawnRightManhandlaHead, SpawnCenterMandhandlaHead):
- These routines spawn
Sprite_Manhandla($88) sprites as child heads. - They assign specific
SprSubtypevalues ($03for left,$02for right,$01for center) to differentiate the heads. - They store the IDs of the spawned heads in global variables (
Offspring1_Id,Offspring2_Id,Offspring3_Id). - They set the initial position, health, and properties for each head.
Head Positioning (SetLeftHeadPos, SetRightHeadPos, SetCenterHeadPos):
- These routines dynamically calculate and set the positions of the spawned heads relative to the main Manhandla body.
Movement (Sprite_Manhandla_Move, Manhandla_StopIfOutOfBounds):
Sprite_Manhandla_Move: The core movement logic for the Manhandla body, utilizing a jump table forStageControl,MoveXandY,MoveXorY, andKeepWalkingstates.Manhandla_StopIfOutOfBounds: Prevents the boss from moving beyond predefined screen boundaries.
Attacks (Chuchu_SpawnBlast, Mothula_SpawnBeams):
Chuchu_SpawnBlast: Spawns a Chuchu blast projectile (Sprite ID$88withSprSubtype = $0A).Mothula_SpawnBeams: Spawns beam projectiles (Sprite ID$89), called fromManhandla_Body.
Drawing (Sprite_Manhandla_Draw, Sprite_BigChuchu_Draw):
Sprite_Manhandla_Draw: Renders the Manhandla body and its heads.Sprite_BigChuchu_Draw: Renders the Big Chuchu form.- Both utilize standard OAM allocation routines and handle animation frames, offsets, character data, properties, and sizes.
Graphics and Palette (ApplyManhandlaGraphics, ApplyManhandlaPalette):
ApplyManhandlaGraphics: Handles DMA transfer of graphics data (manhandla.bin) to VRAM.ApplyManhandlaPalette: Sets the custom palette for Manhandla.
Discrepancies/Notes:
- The
!Healthproperty is00, indicating that the boss's health is managed by its heads in the first phase and then by its ownSprHealthin the Big Chuchu phase. - The
Sprite_ManhandlaID ($88) is efficiently reused for the main boss, its heads, and the Chuchu blast projectile, withSprSubtypedifferentiating their roles. - The reuse of
Mothula_SpawnBeamsfor Manhandla is an example of code reuse. - Hardcoded values for timers, speeds, and offsets could be replaced with named constants for improved readability and maintainability.
- A commented-out
orgforSprite_DoTheDeath#PrepareEnemyDrop.post_death_stuffsuggests potential modifications to the death routine.