Add Sprite_ApplySpeedTowardsPlayerXOrY_Long to zsprite lib
This commit is contained in:
@@ -295,7 +295,7 @@ Sprite_Manhandla_Move:
|
||||
MoveXorY:
|
||||
{
|
||||
LDA $36 : STA $00
|
||||
JSL NewSprite_ApplySpeedTowardsPlayerXOrY
|
||||
JSL Sprite_ApplySpeedTowardsPlayerXOrY_Long
|
||||
JSR Manhandla_StopIfOutOfBounds
|
||||
JSL MoveBody
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user