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
}