Difference between revisions of "Flying Stalfos Head"
From TLoZ: ALTTP Hacking Resources
(Created page with "Flying Stalfos Head") |
|||
(2 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | Flying Stalfos Head | + | {{subpage|Sprites}} |
+ | |||
+ | Sprite {{$|02}}: Flying Stalfos Head | ||
+ | == Flying Stalfos Head == | ||
+ | === Description === | ||
+ | The head of a stalfos which disconnects and moves independently. | ||
+ | |||
+ | === Combat Strategy === | ||
+ | Due to its high HP, it is unlikely the player will be able to kill it. Avoiding it is the best option. | ||
+ | |||
+ | == Stats And Properties == | ||
+ | See [[Sprite Properties]] | ||
+ | |||
+ | '''{{$|06B082}}''' | ||
+ | {|{{Prettytable}} | ||
+ | !Bit(s) | ||
+ | !Info | ||
+ | !Value | ||
+ | |- | ||
+ | | {{Hex|7}} | ||
+ | | Harmless | ||
+ | | {{Hex|0}} | ||
+ | |- | ||
+ | | {{Hex|6}} | ||
+ | | ? | ||
+ | | {{Hex|0}} | ||
+ | |- | ||
+ | | {{Hex|5}} | ||
+ | | ? | ||
+ | | {{Hex|0}} | ||
+ | |- | ||
+ | | {{Hex|4-0}} | ||
+ | | OAM Slots | ||
+ | | {{Hex|00001}} ({{$|01}}) | ||
+ | |} | ||
+ | |||
+ | '''{{$|06B175}}''' | ||
+ | {|{{Prettytable}} | ||
+ | ! Bit(s) | ||
+ | ! Info | ||
+ | ! Value | ||
+ | |- | ||
+ | | {{Hex|7-0}} | ||
+ | | HP | ||
+ | | {{Hex|1111 1111}} ({{$|FF}}) | ||
+ | |} | ||
+ | |||
+ | '''{{$|06B268}}''' | ||
+ | {|{{Prettytable}} | ||
+ | ! Bit(s) | ||
+ | ! Info | ||
+ | ! Value | ||
+ | |- | ||
+ | | {{Hex|7-4}} | ||
+ | | ? | ||
+ | | {{Hex|1000}} ({{$|80}}) | ||
+ | |- | ||
+ | | {{Hex|3-0}} | ||
+ | | [[Damage Types|Damage Type]] | ||
+ | | {{Hex|0001}} ({{$|01}}) | ||
+ | |} | ||
+ | |||
+ | '''{{$|06B35B}}''' | ||
+ | {|{{Prettytable}} | ||
+ | ! Bit(s) | ||
+ | ! Info | ||
+ | ! Value | ||
+ | |- | ||
+ | | {{Hex|7}} | ||
+ | | No Death Animation | ||
+ | | {{Hex|0}} | ||
+ | |- | ||
+ | | {{Hex|6}} | ||
+ | | Invincible | ||
+ | | {{Hex|0}} | ||
+ | |- | ||
+ | | {{Hex|5}} | ||
+ | | Adjust Child coordinates | ||
+ | | {{Hex|0}} | ||
+ | |- | ||
+ | | {{Hex|4}} | ||
+ | | Draw Shadow | ||
+ | | {{Hex|1}} | ||
+ | |- | ||
+ | | {{Hex|3-1}} | ||
+ | | Palette | ||
+ | | {{Hex|101}} ({{$|05}}) | ||
+ | |- | ||
+ | | {{Hex|0}} | ||
+ | | ? | ||
+ | | {{Hex|1}} | ||
+ | |} | ||
+ | |||
+ | '''{{$|06B44E}}''' | ||
+ | {|{{Prettytable}} | ||
+ | ! Bit(s) | ||
+ | ! Info | ||
+ | ! Value | ||
+ | |- | ||
+ | | {{Hex|7}} | ||
+ | | Ignore Collision Settings | ||
+ | | {{Hex|0}} | ||
+ | |- | ||
+ | | {{Hex|6}} | ||
+ | | Statis | ||
+ | | {{Hex|0}} | ||
+ | |- | ||
+ | | {{Hex|5}} | ||
+ | | Persist | ||
+ | | {{Hex|0}} | ||
+ | |- | ||
+ | | {{Hex|4-0}} | ||
+ | | Hit Box Dimensions | ||
+ | | {{Hex|00000}} ({{$|00}}) | ||
+ | |} | ||
+ | |||
+ | '''{{$|06B541}}''' | ||
+ | {|{{Prettytable}} | ||
+ | ! Bit(s) | ||
+ | ! Info | ||
+ | ! Value | ||
+ | |- | ||
+ | | {{Hex|7-4}} | ||
+ | | Tile Interaction Hit Box | ||
+ | | {{Hex|0000}} ({{$|00}}) | ||
+ | |- | ||
+ | | {{Hex|3}} | ||
+ | | ? | ||
+ | | {{Hex|0}} | ||
+ | |- | ||
+ | | {{Hex|2}} | ||
+ | | ? | ||
+ | | {{Hex|0}} | ||
+ | |- | ||
+ | | {{Hex|1}} | ||
+ | | Dies Like A Boss | ||
+ | | {{Hex|0}} | ||
+ | |- | ||
+ | | {{Hex|0}} | ||
+ | | Falls In Holes | ||
+ | | {{Hex|0}} | ||
+ | |} | ||
+ | |||
+ | '''{{$|06B634}}''' | ||
+ | {|{{Prettytable}} | ||
+ | ! Bit(s) | ||
+ | ! Info | ||
+ | ! Value | ||
+ | |- | ||
+ | | {{Hex|7}} | ||
+ | | Disable Tile Interactions | ||
+ | | {{Hex|1}} | ||
+ | |- | ||
+ | | {{Hex|6}} | ||
+ | | ? | ||
+ | | {{Hex|0}} | ||
+ | |- | ||
+ | | {{Hex|5}} | ||
+ | | Is shield Blockable | ||
+ | | {{Hex|0}} | ||
+ | |- | ||
+ | | {{Hex|4}} | ||
+ | | Alternate Damage Sound | ||
+ | | {{Hex|0}} | ||
+ | |- | ||
+ | | {{Hex|3-0}} | ||
+ | | Prize Pack | ||
+ | | {{Hex|0100}} ({{$|04}}) | ||
+ | |} | ||
+ | |||
+ | '''{{$|06B727}}''' | ||
+ | {|{{Prettytable}} | ||
+ | ! Bit(s) | ||
+ | ! Info | ||
+ | ! Value | ||
+ | |- | ||
+ | | {{Hex|7}} | ||
+ | | ? | ||
+ | | {{Hex|0}} | ||
+ | |- | ||
+ | | {{Hex|6}} | ||
+ | | ? | ||
+ | | {{Hex|1}} | ||
+ | |- | ||
+ | | {{Hex|5}} | ||
+ | | Is Interactive | ||
+ | | {{Hex|0}} | ||
+ | |- | ||
+ | | {{Hex|4}} | ||
+ | | Deflect Projectiles | ||
+ | | {{Hex|0}} | ||
+ | |- | ||
+ | | {{Hex|3}} | ||
+ | | Collide With Less Tiles | ||
+ | | {{Hex|0}} | ||
+ | |- | ||
+ | | {{Hex|2}} | ||
+ | | Impervious To Sword/Hammer | ||
+ | | {{Hex|1}} | ||
+ | |- | ||
+ | | {{Hex|1}} | ||
+ | | Impervious To Arrows? | ||
+ | | {{Hex|0}} | ||
+ | |- | ||
+ | | {{Hex|0}} | ||
+ | | ? | ||
+ | | {{Hex|0}} | ||
+ | |} | ||
+ | |||
+ | == Code == | ||
+ | <Code> | ||
+ | ; $35DAF-$35DB6 DATA | ||
+ | pool Sprite_StalfosHead: | ||
+ | { | ||
+ | |||
+ | .h_flip | ||
+ | db $00, $00, $00, $40 | ||
+ | |||
+ | .animation_states | ||
+ | db 0, 1, 2, 1 | ||
+ | } | ||
+ | |||
+ | ; ============================================================================== | ||
+ | |||
+ | ; *$35DB7-$35E4C JUMP LOCATION | ||
+ | Sprite_StalfosHead: | ||
+ | { | ||
+ | ; Force the sprite's layer to be that of the player's. | ||
+ | ; \note This is somewhat unusual. | ||
+ | LDA $EE : STA $0F20, X | ||
+ | |||
+ | LDA $0E00, X : BEQ .use_typical_oam_region | ||
+ | |||
+ | LDA.b #$08 : JSL OAM_AllocateFromRegionC | ||
+ | |||
+ | .use_typical_oam_region | ||
+ | |||
+ | LDA $0E80, X : LSR #3 : AND.b #$03 : TAY | ||
+ | |||
+ | LDA $0F50, X : AND.b #$BF : ORA .h_flip, Y : STA $0F50, X | ||
+ | |||
+ | LDA .animation_states, Y : STA $0DC0, X | ||
+ | |||
+ | LDA.b #$30 : STA $0B89, X | ||
+ | |||
+ | JSR Sprite_PrepAndDrawSingleLarge | ||
+ | JSR Sprite_CheckIfActive | ||
+ | JSR Sprite_CheckIfRecoiling | ||
+ | JSR Sprite_CheckDamage | ||
+ | |||
+ | LDA $0EA0, X : BEQ .not_recoiling | ||
+ | |||
+ | ; This sprite can't be recoiled by hitting it. That's part of why | ||
+ | ; they're annoying. | ||
+ | JSR Sprite_Zero_XY_Velocity | ||
+ | |||
+ | .not_recoiling | ||
+ | |||
+ | JSR Sprite_Move | ||
+ | |||
+ | INC $0E80, X | ||
+ | |||
+ | LDA $0DF0, X : BEQ .flee_from_player | ||
+ | AND.b #$01 : BNE .return | ||
+ | |||
+ | LDA.b #$10 : JSR Sprite_ProjectSpeedTowardsPlayer | ||
+ | |||
+ | .approach_target_speed | ||
+ | |||
+ | LDA $0D40, X : CMP $00 : BEQ .at_target_x_speed | ||
+ | BPL .above_target_x_speed | ||
+ | |||
+ | INC $0D40, X | ||
+ | |||
+ | BRA .check_y_speed | ||
+ | |||
+ | .above_target_x_speed | ||
+ | |||
+ | DEC $0D40, X | ||
+ | |||
+ | .at_target_x_speed | ||
+ | .check_y_speed | ||
+ | |||
+ | LDA $0D50, X : CMP $01 : BEQ .return | ||
+ | BPL .above_target_y_speed | ||
+ | |||
+ | INC $0D50, X | ||
+ | |||
+ | BRA .return | ||
+ | |||
+ | .above_target_y_speed | ||
+ | |||
+ | DEC $0D50, X | ||
+ | |||
+ | .return | ||
+ | |||
+ | RTS | ||
+ | |||
+ | .flee_from_player | ||
+ | |||
+ | TXA : EOR $1A : AND.b #$03 : BNE .return | ||
+ | |||
+ | LDA.b #$10 | ||
+ | |||
+ | JSR Sprite_ProjectSpeedTowardsPlayer | ||
+ | |||
+ | LDA $00 : EOR.b #$FF : INC A : STA $00 | ||
+ | LDA $01 : EOR.b #$FF : INC A : STA $01 | ||
+ | |||
+ | BRA .approach_target_speed | ||
+ | } | ||
+ | </Code> |
Latest revision as of 16:51, 19 December 2016
This is a subpage of Sprites
Sprite $02: Flying Stalfos Head
Flying Stalfos Head
Description
The head of a stalfos which disconnects and moves independently.
Combat Strategy
Due to its high HP, it is unlikely the player will be able to kill it. Avoiding it is the best option.
Stats And Properties
$06B082
Bit(s) | Info | Value |
---|---|---|
7 | Harmless | 0 |
6 | ? | 0 |
5 | ? | 0 |
4-0 | OAM Slots | 00001 ($01) |
$06B175
Bit(s) | Info | Value |
---|---|---|
7-0 | HP | 1111 1111 ($FF) |
$06B268
Bit(s) | Info | Value |
---|---|---|
7-4 | ? | 1000 ($80) |
3-0 | Damage Type | 0001 ($01) |
$06B35B
Bit(s) | Info | Value |
---|---|---|
7 | No Death Animation | 0 |
6 | Invincible | 0 |
5 | Adjust Child coordinates | 0 |
4 | Draw Shadow | 1 |
3-1 | Palette | 101 ($05) |
0 | ? | 1 |
$06B44E
Bit(s) | Info | Value |
---|---|---|
7 | Ignore Collision Settings | 0 |
6 | Statis | 0 |
5 | Persist | 0 |
4-0 | Hit Box Dimensions | 00000 ($00) |
$06B541
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 |
$06B634
Bit(s) | Info | Value |
---|---|---|
7 | Disable Tile Interactions | 1 |
6 | ? | 0 |
5 | Is shield Blockable | 0 |
4 | Alternate Damage Sound | 0 |
3-0 | Prize Pack | 0100 ($04) |
$06B727
Bit(s) | Info | Value |
---|---|---|
7 | ? | 0 |
6 | ? | 1 |
5 | Is Interactive | 0 |
4 | Deflect Projectiles | 0 |
3 | Collide With Less Tiles | 0 |
2 | Impervious To Sword/Hammer | 1 |
1 | Impervious To Arrows? | 0 |
0 | ? | 0 |
Code
; $35DAF-$35DB6 DATA pool Sprite_StalfosHead: { .h_flip db $00, $00, $00, $40 .animation_states db 0, 1, 2, 1 }
- ==============================================================================
; *$35DB7-$35E4C JUMP LOCATION Sprite_StalfosHead: { ; Force the sprite's layer to be that of the player's. ; \note This is somewhat unusual. LDA $EE : STA $0F20, X LDA $0E00, X : BEQ .use_typical_oam_region LDA.b #$08 : JSL OAM_AllocateFromRegionC .use_typical_oam_region LDA $0E80, X : LSR #3 : AND.b #$03 : TAY LDA $0F50, X : AND.b #$BF : ORA .h_flip, Y : STA $0F50, X LDA .animation_states, Y : STA $0DC0, X LDA.b #$30 : STA $0B89, X JSR Sprite_PrepAndDrawSingleLarge JSR Sprite_CheckIfActive JSR Sprite_CheckIfRecoiling JSR Sprite_CheckDamage LDA $0EA0, X : BEQ .not_recoiling ; This sprite can't be recoiled by hitting it. That's part of why ; they're annoying. JSR Sprite_Zero_XY_Velocity .not_recoiling JSR Sprite_Move INC $0E80, X LDA $0DF0, X : BEQ .flee_from_player AND.b #$01 : BNE .return LDA.b #$10 : JSR Sprite_ProjectSpeedTowardsPlayer .approach_target_speed LDA $0D40, X : CMP $00 : BEQ .at_target_x_speed BPL .above_target_x_speed INC $0D40, X BRA .check_y_speed .above_target_x_speed DEC $0D40, X .at_target_x_speed .check_y_speed LDA $0D50, X : CMP $01 : BEQ .return BPL .above_target_y_speed INC $0D50, X BRA .return .above_target_y_speed DEC $0D50, X .return RTS .flee_from_player TXA : EOR $1A : AND.b #$03 : BNE .return LDA.b #$10 JSR Sprite_ProjectSpeedTowardsPlayer LDA $00 : EOR.b #$FF : INC A : STA $00 LDA $01 : EOR.b #$FF : INC A : STA $01 BRA .approach_target_speed }