update goldstar

This commit is contained in:
scawful
2024-06-07 21:23:42 -04:00
parent 9d932373c8
commit 2ec907d0f6

View File

@@ -313,23 +313,25 @@ Goldstar_SetChainProperties:
pushpc pushpc
org $0DA6E3 org $0DA6E3
JSL Link_OAM_Actually JSL LinkOAM_GoldstarWeaponTiles
NOP NOP
pullpc pullpc
LinkOAM_WeaponTiles = $0D839B
; 22D880 ; 22D880
Link_OAM_Actually: LinkOAM_GoldstarWeaponTiles:
{ {
REP #$20 REP #$20
LDA.w $0202 : AND.w #$00FF : CMP.w #$0003 : BEQ + LDA.w $0202 : AND.w #$00FF : CMP.w #$0003 : BEQ +
LDA $839B,Y ; LinkOAM_WeaponTiles LDA.w LinkOAM_WeaponTiles, Y
RTL RTL
+ ; $22D892 + ; $22D892
LDA $839B,Y : CMP.w #$221A : BEQ ++ LDA.w LinkOAM_WeaponTiles, Y : CMP.w #$221A : BEQ ++
RTL RTL
++ ; $22D89B ++ ; $22D89B
LDA GoldstarOrHookshot : AND.w #$00FF : CMP.w #$0002 : BEQ +++ LDA.w GoldstarOrHookshot : AND.w #$00FF : CMP.w #$0002 : BEQ +++
LDA $839B,Y ; LinkOAM_WeaponTiles LDA.w LinkOAM_WeaponTiles, Y
RTL RTL
+++ ; $22D8AA +++ ; $22D8AA
LDA.w #$241E LDA.w #$241E
@@ -780,8 +782,8 @@ BallChain_SFX_Control:
Routine_22DCA0: Routine_22DCA0:
{ {
LDA $7A : CMP #$00 : BNE + ;$A2DCAB LDA $7A : CMP #$00 : BNE + ;$A2DCAB
LDA $0DBB5B,X LDA $0DBB5B, X
RTL RTL
+ +
LDA #$00 LDA #$00
RTL RTL
@@ -789,33 +791,29 @@ Routine_22DCA0:
; ========================================================= ; =========================================================
; 22DD90 ; 22DD90
; TODO: Investigate the purpose of the $7A timer here
CheckAndClearAncillaId: CheckAndClearAncillaId:
{ {
SEP #$30 SEP #$30
; Check if hookshot ancillae in this slot ; Check if hookshot ancillae in this slot
LDA $0C4A : CMP #$1F : BEQ + ; $22DDC9 LDA $0C4A : CMP #$1F : BEQ + ; $22DDC9
LDA $0C4C : CMP #$1F : BEQ ++ ; $22DDB1 LDA $0C4C : CMP #$1F : BEQ ++ ; $22DDB1
LDA $0C4D : CMP #$1F : BEQ +++ ; $22DDB9 LDA $0C4D : CMP #$1F : BEQ +++ ; $22DDB9
LDA $0C4B : CMP #$1F : BEQ ++++ ; $22DDC1 LDA $0C4B : CMP #$1F : BEQ ++++ ; $22DDC1
LDA $7A ; Ball Chain Timer LDA $7A ; Ball Chain Timer
RTS RTS
++ ; 22DDB1 ++ ; 22DDB1
NOP : NOP STZ $0C4C : LDA $7A
STZ $0C4C : LDA $7A RTS
RTS +++ ; 22DDB9
+++ ; 22DDB9 STZ $0C4D : LDA $7A
NOP : NOP RTS
STZ $0C4D : LDA $7A ++++ ; 22DDC1
STZ $0C4B : LDA $7A
RTS RTS
++++ ; 22DDC1
NOP : NOP
STZ $0C4B : LDA $7A
RTS
+ ; 22DDC9 + ; 22DDC9
STZ $0C4A : LDA $7A STZ $0C4A : LDA $7A
RTS RTS
} }
; ========================================================= ; =========================================================
@@ -856,18 +854,6 @@ CheckForSomariaBlock:
RTS RTS
} }
; 22E5F0 doesnt execute?
Routine_22E5F0:
{
LDA $7EF33C : BNE + ;$22E5F7
RTL
+ ; 22E5F7
LDA $4D : BEQ ++ ; $22E5FC
RTL
++ ; 22E5FC
JMP $E108
}
; ========================================================= ; =========================================================
;22EE80 ;22EE80
; TODO: Handle the somaria blast case, these JMPs are invalid. ; TODO: Handle the somaria blast case, these JMPs are invalid.
@@ -966,8 +952,12 @@ Hookshot_Init:
; ========================================================= ; =========================================================
Goldstar_Begin: BeginGoldstarOrHookshot:
{ {
LDA GoldstarOrHookshot : CMP #$02 : BEQ .begin_goldstar
JMP .begin_hookshot
.begin_goldstar:
JSL CheckForBallChain JSL CheckForBallChain
JSL Hookshot_Init JSL Hookshot_Init
JSL BallChain_StartAnimationFlag JSL BallChain_StartAnimationFlag
@@ -975,40 +965,12 @@ Goldstar_Begin:
JSL $099B10 ; AncillaAdd_Hookshot JSL $099B10 ; AncillaAdd_Hookshot
JSL TransferGFXinRAM JSL TransferGFXinRAM
RTL RTL
}
; =========================================================
CheckForSwitchToGoldstar:
{
%CheckNewR_ButtonPress() : BEQ .continue
LDA GoldstarOrHookshot : CMP #$01 : BEQ .set_hookshot
LDA #$01 : STA GoldstarOrHookshot
JMP .continue
.set_hookshot:
LDA #$02 : STA GoldstarOrHookshot
.continue:
LDA.b $3A : AND.b #$40 ; Restore vanilla code
RTL
}
; =========================================================
BeginGoldstarOrHookshot:
{
LDA GoldstarOrHookshot : CMP #$02 : BEQ .begin_goldstar
JMP .return
.begin_goldstar:
JSL Goldstar_Begin
RTL
.return .begin_hookshot
JSL Hookshot_Init JSL Hookshot_Init
LDA #$13 : STA $5D ; Set hookshot state LDA.b #$13 : STA $5D ; Set hookshot state
LDA #$01 : STA.w $037B LDA.b #$01 : STA.w $037B
LDY.b #$03 LDY.b #$03 : LDA.b #$1F ; ANCILLA 1F
LDA.b #$1F ; ANCILLA 1F
JSL $099B10 ; AncillaAdd_Hookshot JSL $099B10 ; AncillaAdd_Hookshot
RTL RTL
} }
@@ -1041,17 +1003,35 @@ ApplyGoldstarDamageClass:
RTL RTL
} }
; =========================================================
CheckForSwitchToGoldstar:
{
%CheckNewR_ButtonPress() : BEQ .continue
LDA GoldstarOrHookshot : CMP #$01 : BEQ .set_hookshot
LDA #$01 : STA GoldstarOrHookshot
JMP .continue
.set_hookshot:
LDA #$02 : STA GoldstarOrHookshot
.continue:
LDA.b $3A : AND.b #$40 ; Restore vanilla code
RTL
}
pushpc pushpc
; ========================================================= ; =========================================================
; Main Hookshot/Goldstar hooks ; Main Hookshot/Goldstar hooks
; LinkItem_Hookshot
org $07AB25 org $07AB25
JSL CheckForSwitchToGoldstar JSL CheckForSwitchToGoldstar
; Ancilla_CheckDamageToSprite.not_airborne
org $06ECF2 org $06ECF2
JSL ApplyGoldstarDamageClass JSL ApplyGoldstarDamageClass
; LinkItem_Hookshot
org $07AB3A ;$07AB40 org $07AB3A ;$07AB40
JSL BeginGoldstarOrHookshot JSL BeginGoldstarOrHookshot
RTS RTS