Add Sprite_ApplySpeedTowardsPlayerXOrY_Long to zsprite lib

This commit is contained in:
scawful
2024-06-21 10:00:02 -04:00
parent 0005130520
commit fb40e55d65
2 changed files with 90 additions and 1 deletions

View File

@@ -295,7 +295,7 @@ Sprite_Manhandla_Move:
MoveXorY:
{
LDA $36 : STA $00
JSL NewSprite_ApplySpeedTowardsPlayerXOrY
JSL Sprite_ApplySpeedTowardsPlayerXOrY_Long
JSR Manhandla_StopIfOutOfBounds
JSL MoveBody

View File

@@ -725,3 +725,92 @@ Sprite_SetupHitBox:
db 8 ; 0x1E
db 12 ; 0x1F
Sprite_ApplySpeedTowardsPlayerXOrY_Long:
{
JSL Sprite_IsBelowPlayer : BEQ .player_below
;playerAbove
REP #$20
; if link.y is 6 above sprite.y it is considered below
LDA SprCachedY : SEC : SBC $20 : CLC : ADC.w #$0006 : STA $01 ;delta Y
SEP #$20
JSL Sprite_IsToRightOfPlayer : BEQ .player_to_the_Right1
;player_to_the_Left
REP #$20
LDA SprCachedX : SEC : SBC $22 ; delta X
CMP $01 : BCS .XGreaterThanY1
;YGreaterThanX
SEP #$20
LDA.b #$00 : SEC : SBC $00 : STA.w SprYSpeed
STZ.w SprXSpeed
RTL
.XGreaterThanY1
SEP #$20
LDA.b #$00 : SEC : SBC $00 : STA.w SprXSpeed
STZ.w SprYSpeed
RTL
.player_to_the_Right1
REP #$20
LDA $22 : SEC : SBC SprCachedX ; delta X
CMP $01 : BCS .XGreaterThanY2
;YGreaterThanX
SEP #$20
LDA.b #$00 : SEC : SBC $00 : STA.w SprYSpeed
STZ.w SprXSpeed
RTL
.XGreaterThanY2
SEP #$20
LDA.b #$00 : CLC : ADC $00 : STA.w SprXSpeed
STZ.w SprYSpeed
RTL
.player_below
REP #$20
; if link.y is 6 above sprite.y it is considered below
LDA $20 : SEC : SBC SprCachedY : CLC : ADC.w #$0006 : STA $01 ; delta Y
SEP #$20
JSL Sprite_IsToRightOfPlayer : BEQ .player_to_the_Right2
;player_to_the_Left
REP #$20
LDA SprCachedX : SEC : SBC $22 ; delta X
CMP $01 : BCS .XGreaterThanY3
;YGreaterThanX
SEP #$20
LDA.b #$00 : CLC : ADC $00 : STA.w SprYSpeed
STZ.w SprXSpeed
RTL
.XGreaterThanY3
SEP #$20
LDA.b #$00 : SEC : SBC $00 : STA.w SprXSpeed
STZ.w SprYSpeed
RTL
.player_to_the_Right2
REP #$20
LDA $22 : SEC : SBC SprCachedX ; delta X
CMP $01 : BCS .XGreaterThanY4
;YGreaterThanX
SEP #$20
LDA.b #$00 : CLC : ADC $00 : STA.w SprYSpeed
STZ.w SprXSpeed
RTL
.XGreaterThanY4
SEP #$20
LDA.b #$00 : CLC : ADC $00 : STA.w SprXSpeed
STZ.w SprYSpeed
RTL
}