Cleanup Twinrova boss sprite

This commit is contained in:
scawful
2024-03-17 01:07:53 -04:00
parent 4fac78bbba
commit 2e22114d8a

View File

@@ -81,9 +81,7 @@ Sprite_Twinrova_Prep:
PHB : PHK : PLB
STZ $0D80, X
LDA.b #$40 : STA $0E50, X ; Health
LDA.b #$04 : STA $0CD2, X ; Bump damage type (4 hearts, green tunic)
%SetSpriteSpeedX(15)
@@ -92,12 +90,16 @@ Sprite_Twinrova_Prep:
LDA #$10 : STA $08
LDA #$10 : STA $09
; TODO: Setup the follower logic with a hook
; rather than dismissing the follower here.
LDA #$00 : STA $7EF3CC
PLB
RTL
}
; =========================================================
!AnimSpeed = 8
macro Twinrova_Front()
@@ -131,6 +133,8 @@ endmacro
; =========================================================
; Phase 0: Blind Maiden turns into Twinrova.
; Initially should be invisible, then
; transfer in Twinrova gfx and run dialogue.
;
; Phase 1: Twinrova is one entity, moving around the room
; and shooting fire and ice attacks at Link.
@@ -157,6 +161,7 @@ Sprite_Twinrova_Main:
dw Twinrova_KotakeMode ; 0x09
dw Twinrova_Dead ; 0x0A
; 0x00
Twinrova_Init:
{
; %Twinrova_Front()
@@ -165,6 +170,7 @@ Sprite_Twinrova_Main:
RTS
}
; 0x01
Twinrova_MoveState:
{
LDA $0E50, X : CMP.b #$20 : BCS .phase_1
@@ -210,6 +216,7 @@ Sprite_Twinrova_Main:
RTS
}
; 0x02 - TODO: Implement Twinrova_MoveForwards
Twinrova_MoveForwards:
{
%Twinrova_Front()
@@ -226,6 +233,7 @@ Sprite_Twinrova_Main:
RTS
}
; 0x03 - TODO: Implement Twinrova_MoveBackwards
Twinrova_MoveBackwards:
{
%Twinrova_Back()
@@ -242,6 +250,7 @@ Sprite_Twinrova_Main:
RTS
}
; 0x04
Twinrova_PrepareAttack:
{
%StartOnFrame(7)
@@ -293,6 +302,7 @@ Sprite_Twinrova_Main:
RTS
}
; 0x07
Twinrova_Hurt:
{
%StartOnFrame(10)
@@ -311,6 +321,7 @@ Sprite_Twinrova_Main:
RTS
}
; 0x08
Twinrova_KoumeMode:
{
%StartOnFrame(8)
@@ -330,6 +341,7 @@ Sprite_Twinrova_Main:
RTS
}
; 0x09
Twinrova_KotakeMode:
{
%StartOnFrame(9)
@@ -349,35 +361,30 @@ Sprite_Twinrova_Main:
RTS
}
; 0x0A
Twinrova_Dead:
{
%StartOnFrame(10)
%Twinrova_Hurt()
RTS
}
}
; =========================================================
Untitled_Garnish:
; Reused function from TrinexxBreath.
TrinexxBreath_AltEntry:
{
LDA $1A : AND.b #$03 : BNE .no_shake
JSL Sprite_IsToRightOfPlayer
LDA $0D50, X : CMP .x_speed_targets, Y : BEQ .no_shake
CLC : ADC.w $8000, Y : STA $0D50, X
.no_shake:
.no_shake
JSL Sprite_CheckTileCollision : BEQ .exit
JSL Sprite_BounceTowardPlayer
.exit
RTS
.x_speed_targets
@@ -390,101 +397,68 @@ Sprite_Twinrova_FireAttack:
JSL Sprite_Move
.no_collision
JSR Sprite_Twinrova_FireAttack_AddFireGarnish
JMP Untitled_Garnish
JMP TrinexxBreath_AltEntry
}
.AddFireGarnish
; $1DBDD6 - TrinexxFire_AddFireGarnish
AddFireGarnish:
{
INC $0E80, X : LDA $0E80, X : AND.b #$07 : BNE .return
LDA.b #$2A : JSL Sound_SetSfx2PanLong
LDA.b #$1D
; *$EBDE8 ALTERNATE ENTRY POINT
PHX : TXY
TAX : STA $00
LDA.b #$1D : PHX : TXY : TAX : STA $00
.next_slot
LDA $7FF800, X : BEQ .free_slot
DEX : BPL .next_slot
DEC $0FF8 : BPL .use_search_index
LDA $00 : STA $0FF8
.use_search_index
LDX $0FF8
.free_slot
LDA.b #$10 : STA $7FF800, X : STA $0FB4
TYA : STA $7FF92C, X
LDA $0D10, Y : STA $7FF83C, X
LDA $0D30, Y : STA $7FF878, X
LDA $0D00, Y : CLC : ADC.b #$10 : STA $7FF81E, X
LDA $0D20, Y : ADC.b #$00 : STA $7FF85A, X
LDA SprX, Y : STA $7FF83C, X
LDA SprXH, Y : STA $7FF878, X
LDA SprY, Y : CLC : ADC.b #$10 : STA $7FF81E, X
LDA SprYH, Y : ADC.b #$00 : STA $7FF85A, X
LDA.b #$7F : STA $7FF90E, X
STX $00
PLX
.return
RTS
}
; $1DBD65 - TrinexxBreath_ice_add_ice_garnish
AddIceGarnishV2:
{
INC $0E80, X : LDA $0E80, X : AND.b #$07 : BNE .return
LDA.b #$14 : JSL Sound_SetSfx3PanLong
LDA.b #$1D
; *$EBDE8 ALTERNATE ENTRY POINT
PHX : TXY
TAX : STA $00
LDA.b #$1D : PHX : TXY : TAX : STA $00
.next_slot
LDA $7FF800, X : BEQ .free_slot
DEX : BPL .next_slot
DEC $0FF8 : BPL .use_search_index
LDA.b #$00 : STA $0FF8
.use_search_index
LDX $0FF8
.free_slot
LDA.b #$0C : STA $7FF800, X : STA $0FB4
TYA : STA $7FF92C, X
LDA $0D10, Y : STA $7FF83C, X
LDA $0D30, Y : STA $7FF878, X
LDA SprX, Y : STA $7FF83C, X
LDA SprXH, Y : STA $7FF878, X
LDA SprY, Y : CLC : ADC.b #$10 : STA $7FF81E, X
LDA SprYH, Y : ADC.b #$00 : STA $7FF85A, X
LDA $0D00, Y : CLC : ADC.b #$10 : STA $7FF81E, X
LDA $0D20, Y : ADC.b #$00 : STA $7FF85A, X
LDA.b #$7F : STA $7FF90E, X
STX $00
LDA.b #$7F : STA $7FF90E, X : STX $00
PLX
@@ -494,11 +468,11 @@ AddIceGarnishV2:
Sprite_Twinrova_IceAttack:
{
JSL Sprite_CheckTileCollision : BNE .no_collision
JSL Sprite_Move
.no_collision
JSR AddIceGarnishV2
JSR Untitled_Garnish
.return
RTS
JMP TrinexxBreath_AltEntry
}
; =========================================================
@@ -539,20 +513,15 @@ org $09B34F
Garnish_TrinexxIce:
{
; special animation 0x0C
LDA $7FF90E, X : LSR #2 : AND.b #$03 : TAY
LDA TrinexxIce_Pool_properties, Y : STA $04
JSR Garnish_PrepOamCoord
LDA $00 : STA ($90), Y
LDA $02 : INY : STA ($90), Y
LDA $7FF90E, X : LSR #5 : PHX : TAX
LDA TrinexxIce_Pool_chr, X : INY : STA ($90), Y
LDA.b #$35 : ORA $04 : PLX
JMP Garnish_SetOamPropsAndLargeSize