new sprite function lib cleanup

This commit is contained in:
scawful
2024-06-27 19:04:02 -04:00
parent 99cf2085ac
commit ce0b6772cc

View File

@@ -1,17 +1,13 @@
; =========================================================
;Long function, return Carry Set if Active
; return carry set if active
Sprite_CheckActive:
{
; Deactivates the sprite in certain situations
LDA $0DD0, X : CMP.b #$09 : BNE .inactive
LDA $0FC1 : BNE .inactive
LDA $11 : BNE .inactive
LDA $0CAA, X : BMI .active
LDA $0F00, X : BEQ .active
.inactive
@@ -28,12 +24,12 @@ Sprite_CheckActive:
Sprite_MoveHoriz:
{
LDA.w $0D50, X : BEQ .no_velocity
LDA.w SprXSpeed, X : BEQ .no_velocity
ASL : ASL : ASL : ASL
CLC : ADC.w $0D70, X : STA.w $0D70, X
LDY.b #$00
LDA.w $0D50, X
LDA.w SprXSpeed, X
PHP : LSR : LSR : LSR : LSR : PLP
BPL ++
@@ -61,12 +57,12 @@ Sprite_Move:
Sprite_MoveVert:
{
LDA.w $0D40, X : BEQ .no_velocity
LDA.w SprYSpeed, X : BEQ .no_velocity
ASL : ASL : ASL : ASL
CLC : ADC.w $0D60,X : STA.w $0D60,X
LDY.b #$00
LDA.w $0D40, X
LDA.w SprYSpeed, X
PHP : LSR : LSR : LSR : LSR : PLP
BPL ++
@@ -92,9 +88,7 @@ Sprite_MoveAltitude:
LDA.w $0F80, X : PHP
LSR : LSR : LSR : LSR
PLP : BPL .positive
ORA.b #$F0
.positive
ADC.w $0F70,X : STA.w $0F70,X
@@ -160,8 +154,8 @@ Sprite_FloatTowardPlayer:
Sprite_FloatAwayFromPlayer:
{
LDA $0D50, X : EOR.b #$FF : INC : STA $0D50, X
LDA $0D40, X : EOR.b #$FF : INC : STA $0D40, X
LDA SprXSpeed, X : EOR.b #$FF : INC : STA SprXSpeed, X
LDA SprYSpeed, X : EOR.b #$FF : INC : STA SprYSpeed, X
JSL Sprite_MoveAltitude
@@ -171,16 +165,22 @@ Sprite_FloatAwayFromPlayer:
Sprite_BounceFromTileCollision:
{
JSL Sprite_CheckTileCollision : AND.b #$03 : BEQ ++
LDA.w $0D50,X : EOR.b #$FF : INC : STA.w $0D50,X
LDA.w SprXSpeed, X : EOR.b #$FF : INC : STA.w SprXSpeed, X
INC.w $0ED0, X
++ LDA.w $0E70, X : AND.b #$0C : BEQ ++
LDA.w $0D40,X : EOR.b #$FF : INC : STA.w $0D40,X
LDA.w SprYSpeed, X : EOR.b #$FF : INC : STA.w SprYSpeed, X
INC.w $0ED0, X
++ RTL
}
Sprite_ProjectSpeedRandomly:
{
}
; =========================================================
DragYL = $0B7C
DragYH = $0B7D
@@ -254,10 +254,8 @@ DragPlayer:
Intro_Dungeon_Main:
{
;test to see if we are at a place where a guardian is present
LDA $0E20 : CMP.b #$92 : BNE .notGuardian
LDA $0E30 : BEQ .notGuardian
LDA $0E20 : CMP.b #$92 : BNE .not_sprite_body_boss
LDA $0E30 : BEQ .not_sprite_body_boss
LDA $1C : AND.b #$FE : STA $1C ;turn off BG2 (Body)
; free ram used to check if the sprite ran this frame, if 0, it didn't run
@@ -268,7 +266,7 @@ Intro_Dungeon_Main:
STZ.b SpriteRanCheck
.notGuardian
.not_sprite_body_boss
REP #$21 : LDA.w DungeonMainCheck : BNE .intro ;<- load that free ram you are using if it's not zero then we're doing intro thing
LDA $E2 : RTL ;return to normal intro
@@ -453,61 +451,35 @@ Link_SetupHitBox:
Sprite_SetupHitBox:
{
PHB : PHK : PLB
LDA.w $0F70, X
BMI .too_high
LDA.w $0F70, X : BMI .too_high
PHY
LDA.w $0F60, X : AND.b #$1F : TAY
LDA.w $0D10, X : CLC : ADC.w .offset_x_low, Y : STA.b $04
LDA.w $0F60, X
AND.b #$1F
TAY
LDA.w $0D30, X : ADC.w .offset_x_high, Y : STA.b $0A
LDA.w $0D10, X
CLC
ADC.w .offset_x_low, Y
STA.b $04
LDA.w $0D30, X
ADC.w .offset_x_high, Y
STA.b $0A
LDA.w $0D00, X
CLC
ADC.w .offset_y_low, Y
LDA.w $0D00, X : CLC : ADC.w .offset_y_low, Y
PHP
SEC
SBC.w $0F70, X
STA.b $05
LDA.w $0D20, X
SBC.b #$00
SEC : SBC.w $0F70, X : STA.b $05
LDA.w $0D20, X : SBC.b #$00
PLP
ADC.w .offset_y_high, Y
STA.b $0B
LDA.w .width, Y
STA.b $06
LDA.w .height, Y
STA.b $07
ADC.w .offset_y_high, Y : STA.b $0B
LDA.w .width, Y : STA.b $06
LDA.w .height, Y : STA.b $07
PLY
PLB
RTL
; ---------------------------------------------------------
.too_high
LDA.b #$80
STA.b $0A
LDA.b #$80 : STA.b $0A
PLB
RTL
.offset_x_low
@@ -729,7 +701,9 @@ Sprite_SetupHitBox:
db 48 ; 0x1D
db 8 ; 0x1E
db 12 ; 0x1F
}
; =========================================================
Sprite_ApplySpeedTowardsPlayerXOrY_Long:
{