Vulture

From TLoZ: ALTTP Hacking Resources
Revision as of 03:27, 19 December 2016 by Superskuj (talk | contribs)
Jump to: navigation, search

Sprite $01: The Vulture

Vulture

Description

Desert bird of prey. Circles the player and closes in slowly.

Combat Strategy

Spin attacks can be effective when the vulture has closed in on the player.

Stats And Properties

See Sprite Properties

$06B081

Bit(s) Info Value
7 Harmless 0
6  ? 0
5  ? 0
4-0 OAM Slots 00010 ($02)

$06B174

Bit(s) Info Value
7-0 HP 0000 0110 ($06)

$06B267

Bit(s) Info Value
7-4  ? 1000 ($80)
3-0 Damage Type 0011 ($03)

$06B35A

Bit(s) Info Value
7 No Death Animation 0
6 Invincible 0
5 Adjust Child coordinates 0
4 Draw Shadow 0
3-1 Palette 101 ($05)
0  ? 1

$06B44D

Bit(s) Info Value
7 Ignore Collision Settings 0
6 Statis 0
5 Persist 0
4-0 Hit Box Dimensions 00000 ($00)

$06B540

Bit(s) Info Value
7-4 Tile Interaction Hit Box 0000 ($00)
3  ? 0
2  ? 0
1 Dies Like A Boss 0
0 Falls In Holes 0

$06B633

Bit(s) Info Value
7 Disable Tile Interactions 1
6  ? 0
5 Is shield Blockable 0
4 Alternate Damage Sound 1
3-0 Prize Pack 0110 ($06)

$06B726

Bit(s) Info Value
7  ? 0
6  ? 0
5 Is Interactive 0
4 Deflect Projectiles 0
3 Collide With Less Tiles 0
2 Impervious To Sword/Hammer 0
1 Impervious To Arrows? 0
0  ? 0

Code

   ; *$EDC72-$EDC79 LONG
   Sprite_VultureLong:
   {
       PHB : PHK : PLB
       
       JSR Sprite_Vulture
       
       PLB
       
       RTL
   }
==============================================================================
   ; *$EDC7A-$EDC9B LOCAL
   Sprite_Vulture:
   {
       LDA $0B89, X : ORA.b #$30 : STA $0B89, X
       
       JSR Vulture_Draw
       JSR Sprite4_CheckIfActive
       JSR Sprite4_CheckIfRecoiling
       JSR Sprite4_CheckDamage
       JSR Sprite4_Move
       
       LDA $0D80, X
       
       JSL UseImplicitRegIndexedLocalJumpTable
       
       dw Vulture_Dormant
       dw Vulture_Circling
   }
==============================================================================
   ; *$EDC9C-$EDCB4 JUMP LOCATION
   Vulture_Dormant:
   {
       INC $0E80, X : LDA $0E80, X : CMP.b #$A0 : BNE .activation_delay
       
       INC $0D80, X
       
       LDA.b #$1E : JSL Sound_SetSfx3PanLong
       
       LDA.b #$10 : STA $0DF0, X
   
   .activation_delay
   
       RTS
   }
==============================================================================
   ; $EDCB5-$EDCB8 DATA
   pool Vulture_Circling:
   {
   
   .animation_states
       db 1, 2, 3, 2
   }
==============================================================================
   ; *$EDCB9-$EDD1D JUMP LOCATION
   Vulture_Circling:
   {
       LDA $1A : LSR A : AND.b #$03 : TAY
       
       LDA .animation_states, Y : STA $0DC0, X
       
       LDA $0DF0, X : BEQ .finished_ascending
       
       INC $0F70, X
       
       RTS
   
   .finished_ascending
   
       TXA : EOR $1A : AND.b #$01 : BNE .dont_adjust_xy_speeds
       
       TXA : AND.b #$0F : ADD.b #$18
       
       JSL Sprite_ProjectSpeedTowardsPlayerLong
       
       LDA $00 : EOR.b #$FF : INC A : STA $0D50, X
       
       LDA $01 : STA $0D40, X
       
       LDA $0E : ADD.b #$28 : CMP.b #$50 : BCS .too_far_from_player
       
       LDA $0F : ADD.b #$28 : CMP.b #$50 : BCS .too_far_from_player
   
   .dont_adjust_xy_speeds
   
       RTS
   
   .too_far_from_player
   
       ; This mess o' logic keep the vulture from going too far from the
       ; player by apparently reversing somewhat...
       LDA $00 : ASL $00 : PHP : ROR A : PLP : ROR A : ADD $0D40, X : STA $0D40, X
       
       LDA $01 : ASL $01 : PHP : ROR A : PLP : ROR A : ADD $0D50, X : STA $0D50, X
       
       RTS
   }
==============================================================================
   ; $EDD1E-$EDD5D DATA
   pool Vulture_Draw:
   {
   
   .oam_groups
       dw -8,  0 : db $86, $00, $00, $02
       dw  8,  0 : db $86, $40, $00, $02
       
       dw -8,  0 : db $80, $00, $00, $02
       dw  8,  0 : db $80, $40, $00, $02
       
       dw -8,  0 : db $82, $00, $00, $02
       dw  8,  0 : db $82, $40, $00, $02
       
       dw -8,  0 : db $84, $00, $00, $02
       dw  8,  0 : db $84, $40, $00, $02
   }
==============================================================================
   ; *$EDD5E-$EDD7A LOCAL
   Vulture_Draw:
   {
       LDA.b #$00 : XBA
       
       LDA $0DC0, X : REP #$20 : ASL #4 : ADC.w #.oam_groups : STA $08
       
       SEP #$20
       
       LDA.b #$02 : JSR Sprite4_DrawMultiple
       
       JSL Sprite_DrawShadowLong
       
       RTS
   }