Vulture
From TLoZ: ALTTP Hacking Resources
This is a subpage of Sprites
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
$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
}