- 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.
3.9 KiB
3.9 KiB
Pedestal (Magic Pedestal Plaque)
Overview
The pedestal.asm file defines the custom behavior for a "Magic Pedestal" sprite, which is an interactive object that responds to Link's actions. This implementation overrides a vanilla pedestal plaque sprite (Sprite_B3_PedestalPlaque) to trigger specific game events based on Link's inventory, input, and the current AreaIndex.
Vanilla Overrides
org $1EE05F: InjectsJSL CheckForBookinto theSprite_B3_PedestalPlaqueroutine. This means the custom logic defined inCheckForBookwill execute when the vanilla pedestal plaque sprite is processed.
CheckForBook
This routine is the primary entry point for the custom pedestal logic. It checks several conditions to determine if Link is interacting with the pedestal in a specific way:
- Link's Action: Checks
$2F(Link's current action/state). - Player Contact: Checks for damage to player (
JSL Sprite_CheckDamageToPlayer), which in this context likely means Link is in contact with the pedestal. - Item Held: Checks if Link is holding a specific item (
$0202compared to$0F, which likely corresponds to a book item). - Player Input: Checks if Link is pressing the Y button (
BIT.b $F4). - State Manipulation: If Link is holding the book and pressing Y, it sets
$0300to0,$037Ato$20, and$012Eto0(these are likely related to Link's animation or state changes). - Event Trigger: Calls
JSR PedestalPlaqueto execute area-specific logic.
CheckForBook:
{
LDA.b $2F : BNE .exit
JSL Sprite_CheckDamageToPlayer : BCC .exit
LDA.w $0202 : CMP.b #$0F : BNE .not_holding_book
LDY.b #$01 : BIT.b $F4 : BVS .not_pressing_y
.not_holding_book
LDY.b #$00
.not_pressing_y
CPY.b #$01 : BNE .no_book_pose
STZ.w $0300
LDA.b #$20
STA.w $037A
STZ.w $012E
.no_book_pose
JSR PedestalPlaque
.exit
LDA.b AreaIndex : CMP.b #$30
RTL
}
PedestalPlaque
This routine contains the area-specific logic for the pedestal, triggering different events based on the current AreaIndex:
- Zora Temple (
AreaIndex = $1E): Checks a flag ($7EF29Ebit$20) andSongFlag($03). If specific conditions are met (e.g., a certain event has not occurred and a particular song has been played), it sets$04C6to$01(likely a flag to open a gate or trigger an event) and clearsSongFlag. - Goron Desert (
AreaIndex = $36): No specific logic defined in this file. - Fortress Secrets (
AreaIndex = $5E): No specific logic defined in this file.
PedestalPlaque:
{
LDA.b AreaIndex : CMP.b #$1E : BEQ .zora_temple
CMP.b #$36 : BEQ .goron_desert
CMP.b #$5E : BEQ .fortress_secrets
JMP .return
.zora_temple
LDA.l $7EF29E : AND.b #$20 : BNE .return
LDA.b SongFlag : CMP.b #$03 : BNE .return
LDA.b #$01 : STA $04C6
STZ.b SongFlag
JMP .return
.goron_desert
.fortress_secrets
.return
RTS
}
Design Patterns
- Vanilla Override: This file directly modifies the vanilla pedestal plaque sprite to implement custom interactive behavior, demonstrating how to integrate new puzzle mechanics into existing game elements.
- Context-Sensitive Interaction: The pedestal responds specifically when Link is holding a particular item (a book) and pressing a button, creating a unique and logical interaction for puzzle solving.
- Quest Progression Integration: The pedestal triggers events based on the
AreaIndexand various game state flags (e.g.,SongFlag,$7EF29E), indicating its role in advancing specific quests and unlocking new areas. - Game State Manipulation: Directly modifies WRAM addresses (
$04C6,SongFlag) to trigger game events, such as opening gates or clearing flags, which are crucial for puzzle resolution and progression.