Add Sprite_ApplySpeedTowardsPlayerXOrY_Long to zsprite lib
This commit is contained in:
@@ -295,7 +295,7 @@ Sprite_Manhandla_Move:
|
|||||||
MoveXorY:
|
MoveXorY:
|
||||||
{
|
{
|
||||||
LDA $36 : STA $00
|
LDA $36 : STA $00
|
||||||
JSL NewSprite_ApplySpeedTowardsPlayerXOrY
|
JSL Sprite_ApplySpeedTowardsPlayerXOrY_Long
|
||||||
JSR Manhandla_StopIfOutOfBounds
|
JSR Manhandla_StopIfOutOfBounds
|
||||||
JSL MoveBody
|
JSL MoveBody
|
||||||
|
|
||||||
|
|||||||
@@ -725,3 +725,92 @@ Sprite_SetupHitBox:
|
|||||||
db 8 ; 0x1E
|
db 8 ; 0x1E
|
||||||
db 12 ; 0x1F
|
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