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