From fb40e55d655179b74632f3ff8ebb98a0d050243d Mon Sep 17 00:00:00 2001 From: scawful Date: Fri, 21 Jun 2024 10:00:02 -0400 Subject: [PATCH] Add Sprite_ApplySpeedTowardsPlayerXOrY_Long to zsprite lib --- Sprites/Bosses/manhandla.asm | 2 +- Sprites/ZSpriteLib/sprite_new_functions.asm | 89 +++++++++++++++++++++ 2 files changed, 90 insertions(+), 1 deletion(-) diff --git a/Sprites/Bosses/manhandla.asm b/Sprites/Bosses/manhandla.asm index 76afd50..7906203 100644 --- a/Sprites/Bosses/manhandla.asm +++ b/Sprites/Bosses/manhandla.asm @@ -295,7 +295,7 @@ Sprite_Manhandla_Move: MoveXorY: { LDA $36 : STA $00 - JSL NewSprite_ApplySpeedTowardsPlayerXOrY + JSL Sprite_ApplySpeedTowardsPlayerXOrY_Long JSR Manhandla_StopIfOutOfBounds JSL MoveBody diff --git a/Sprites/ZSpriteLib/sprite_new_functions.asm b/Sprites/ZSpriteLib/sprite_new_functions.asm index 09dfd98..5a3b591 100644 --- a/Sprites/ZSpriteLib/sprite_new_functions.asm +++ b/Sprites/ZSpriteLib/sprite_new_functions.asm @@ -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 +} \ No newline at end of file