cleanup twinrova, optimize action size

This commit is contained in:
scawful
2024-06-30 14:16:11 -04:00
parent 79b73163d4
commit e9f9f04655

View File

@@ -83,19 +83,19 @@ Sprite_Twinrova_Prep:
; Kill the sprite if the Maiden is present
LDA.l $7EF3CC : CMP.b #$06 : BNE .prep_twinrova
STZ.w $0DD0, X
.prep_twinrova
LDA.b #$5A : STA.w SprHealth, X ; Health
LDA.b #$80 : STA $0CAA, X
LDA.b #$04 : STA $0CD2, X ; Bump damage type (4 hearts, green tunic)
LDA $0E60, X : AND.b #$BF : STA $0E60, X ; Not invincible
LDA.w $0E60, X : AND.b #$BF : STA.w $0E60, X ; Not invincible
%SetSpriteSpeedX(15)
%SetSpriteSpeedX(15)
; Blind Boss startup configuration
LDA #$10 : STA $08
LDA #$10 : STA $09
LDA.b #$10 : STA $08
LDA.b #$10 : STA $09
LDA.b #$60 : STA.w SprTimerC, X
LDA.b #$01 : STA.w SprMiscB, X
@@ -156,6 +156,9 @@ endmacro
Sprite_Twinrova_Main:
{
JSL Sprite_PlayerCantPassThrough
JSL Sprite_DamageFlash_Long
LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable
@@ -252,12 +255,9 @@ Sprite_Twinrova_Main:
%DoDamageToPlayerSameLayerOnContact()
PLX
JSL Sprite_DamageFlash_Long
LDA #$10 ; Set speed
JSL Sprite_FloatTowardPlayer
JSL Sprite_CheckTileCollision
JSL Sprite_PlayerCantPassThrough
%GotoAction(1)
RTS
@@ -274,12 +274,9 @@ Sprite_Twinrova_Main:
%DoDamageToPlayerSameLayerOnContact()
PLX
JSL Sprite_DamageFlash_Long
LDA #$20
JSL Sprite_FloatTowardPlayer
JSL Sprite_CheckTileCollision
JSL Sprite_PlayerCantPassThrough
%GotoAction(1)
RTS
@@ -294,8 +291,6 @@ Sprite_Twinrova_Main:
LDA #$01 : STA $0360
JSL Sprite_PlayerCantPassThrough
LDA $0CAA : AND.b #$03 : STA $0CAA
LDA SprTimerD, X : BNE +
LDA $0CAA : ORA.b #$03 : STA $0CAA
@@ -317,7 +312,6 @@ Sprite_Twinrova_Main:
%Twinrova_Ready()
JSR Sprite_Twinrova_FireAttack
JSL Sprite_PlayerCantPassThrough
; Random chance to release fireball
JSL GetRandomInt : AND.b #$3F : BNE ++
@@ -338,7 +332,6 @@ Sprite_Twinrova_Main:
%Twinrova_Ready()
JSR Sprite_Twinrova_IceAttack
JSL Sprite_PlayerCantPassThrough
LDA.w SprTimerD, X : BNE +
%GotoAction(1)
@@ -353,9 +346,6 @@ Sprite_Twinrova_Main:
%StartOnFrame(10)
%Twinrova_Hurt()
JSL Sprite_DamageFlash_Long
JSL Sprite_PlayerCantPassThrough
; Check if hurt timer is zero, if not keep flashing hurt animation
LDA.w SprTimerD, X : BNE .HurtAnimation
@@ -427,7 +417,7 @@ Sprite_Twinrova_Main:
JSL Sprite_SpawnFireball
+++
JSL Sprite_DamageFlash_Long
JSR RageModeMove
LDA SprTimerD, X : BNE +
@@ -458,7 +448,6 @@ Sprite_Twinrova_Main:
++
.not_below
JSL Sprite_DamageFlash_Long
JSR RageModeMove
JSL GetRandomInt : AND.b #$0F : BNE +++
@@ -623,7 +612,6 @@ TrinexxBreath_AltEntry:
TAY
LDA SpeedAdjustments, Y : CLC : ADC $0D50, X : STA $0D50, X
LDA SpeedAdjustments+4, Y : CLC : ADC $0D40, X : STA $0D40, X
.no_adjustment
JSL Sprite_BounceFromTileCollision
@@ -652,9 +640,10 @@ TrinexxBreath_AltEntry:
.shake_y
db 0, -1
; Adjustments for xy speeds (small positive, small negative)
SpeedAdjustments:
db $02, $FE, $04, $FC ; Adjustments for X speeds (small positive, small negative)
db $01, $FF, $02, $FE ; Adjustments for Y speeds (small positive, small negative)
db $02, $FE, $04, $FC ; X
db $01, $FF, $02, $FE ; Y
}
Sprite_Twinrova_FireAttack: