update Sprite_CheckIfRecoiling
This commit is contained in:
@@ -878,99 +878,76 @@ MovieEffect:
|
|||||||
}
|
}
|
||||||
|
|
||||||
Sprite_CheckIfRecoiling:
|
Sprite_CheckIfRecoiling:
|
||||||
LDA.w $0EA0,X
|
PHB : PHK : PLB
|
||||||
BEQ .exit
|
|
||||||
|
|
||||||
AND.b #$7F
|
LDA.w $0EA0, X : BEQ .exit
|
||||||
BEQ .recoil_over
|
AND.b #$7F : BEQ .recoil_over
|
||||||
|
LDA.w $0D40, X
|
||||||
|
PHA
|
||||||
|
|
||||||
LDA.w $0D40,X
|
LDA.w $0D50, X
|
||||||
PHA
|
PHA
|
||||||
|
|
||||||
LDA.w $0D50,X
|
DEC.w $0EA0, X : BNE .still_recoiling
|
||||||
PHA
|
LDA.w $0F40, X : CLC : ADC.b #$20 : CMP.b #$40 : BCS .no_adjust
|
||||||
|
LDA.w $0F30, X : CLC : ADC.b #$20 : CMP.b #$40 : BCC .still_recoiling
|
||||||
|
.no_adjust
|
||||||
|
LDA.b #$90 : STA.w $0EA0,X
|
||||||
|
.still_recoiling
|
||||||
|
LDA.w $0EA0,X : BMI .no_movement
|
||||||
|
|
||||||
DEC.w $0EA0,X
|
LSR A
|
||||||
BNE .still_recoiling
|
LSR A
|
||||||
|
TAY
|
||||||
|
|
||||||
LDA.w $0F40,X
|
LDA.b $1A : AND.w .masks,Y : BNE .no_movement
|
||||||
CLC
|
|
||||||
ADC.b #$20
|
|
||||||
CMP.b #$40
|
|
||||||
BCS .no_adjust
|
|
||||||
|
|
||||||
LDA.w $0F30,X
|
LDA.w $0F30, X : STA.w $0D40,X
|
||||||
CLC
|
|
||||||
ADC.b #$20
|
|
||||||
CMP.b #$40
|
|
||||||
BCC .still_recoiling
|
|
||||||
|
|
||||||
.no_adjust
|
LDA.w $0F40, X : STA.w $0D50,X
|
||||||
LDA.b #$90
|
|
||||||
STA.w $0EA0,X
|
|
||||||
|
|
||||||
.still_recoiling
|
LDA.w $0CD2, X : BMI .handle_movement
|
||||||
LDA.w $0EA0,X
|
|
||||||
BMI .no_movement
|
|
||||||
|
|
||||||
LSR A
|
JSL Sprite_CheckTileCollision_long
|
||||||
LSR A
|
|
||||||
TAY
|
|
||||||
|
|
||||||
LDA.b $1A
|
LDA.w $0E70, X : AND.b #$0F : BEQ .handle_movement
|
||||||
AND.w .masks,Y
|
|
||||||
BNE .no_movement
|
|
||||||
|
|
||||||
LDA.w $0F30,X
|
.stop_horizontal_movement
|
||||||
STA.w $0D40,X
|
CMP.b #$04 : BCS .stop_vertical_movement
|
||||||
|
|
||||||
LDA.w $0F40,X
|
STZ.w $0F40,X
|
||||||
STA.w $0D50,X
|
STZ.w $0D50,X
|
||||||
|
|
||||||
LDA.w $0CD2,X
|
BRA .movement_stopped
|
||||||
BMI .handle_movement
|
|
||||||
|
|
||||||
JSL Sprite_CheckTileCollision_long
|
.stop_vertical_movement
|
||||||
|
STZ.w $0F30,X
|
||||||
|
STZ.w $0D40,X
|
||||||
|
|
||||||
LDA.w $0E70,X
|
.movement_stopped
|
||||||
AND.b #$0F
|
BRA .no_movement
|
||||||
BEQ .handle_movement
|
|
||||||
|
|
||||||
.stop_horizontal_movement
|
.handle_movement
|
||||||
CMP.b #$04
|
JSL Sprite_Move
|
||||||
BCS .stop_vertical_movement
|
|
||||||
|
|
||||||
STZ.w $0F40,X
|
.no_movement
|
||||||
STZ.w $0D50,X
|
PLA
|
||||||
|
STA.w $0D50,X
|
||||||
|
|
||||||
BRA .movement_stopped
|
PLA
|
||||||
|
STA.w $0D40,X
|
||||||
|
|
||||||
.stop_vertical_movement
|
PLA
|
||||||
STZ.w $0F30,X
|
PLA
|
||||||
STZ.w $0D40,X
|
|
||||||
|
|
||||||
.movement_stopped
|
.exit
|
||||||
BRA .no_movement
|
PLB
|
||||||
|
RTL
|
||||||
|
|
||||||
.handle_movement
|
.recoil_over
|
||||||
JSL Sprite_Move
|
|
||||||
|
|
||||||
.no_movement
|
|
||||||
PLA
|
|
||||||
STA.w $0D50,X
|
|
||||||
|
|
||||||
PLA
|
|
||||||
STA.w $0D40,X
|
|
||||||
|
|
||||||
PLA
|
|
||||||
PLA
|
|
||||||
|
|
||||||
.exit
|
|
||||||
RTL
|
|
||||||
|
|
||||||
.recoil_over
|
|
||||||
STZ.w $0EA0,X
|
STZ.w $0EA0,X
|
||||||
|
|
||||||
|
PLB
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
.masks
|
.masks
|
||||||
|
|||||||
Reference in New Issue
Block a user