Cleanup goldstar.asm

This commit is contained in:
scawful
2024-10-01 17:36:55 -04:00
parent 1c677e0470
commit 3c33b015c4

View File

@@ -9,18 +9,18 @@
pullpc
TransferGFXinRAM:
{
PHX ; keep X
PHP ; keep processor byte
REP #$20 ; 16bit is a bit faster
PHX ; keep X
PHP ; keep processor byte
REP #$20 ; 16bit is a bit faster
LDX #$80
LDX #$80
--
LDA.l .morningstargfx, X : STA.l $7EA180, X
DEX : DEX : BPL --
PLP
PLX
RTL
PLP
PLX
RTL
.morningstargfx
incbin morningstar.bin
@@ -30,13 +30,11 @@ pushpc
; OAM Draw Pattern for spikeball gfx
org $0085C4
dw $0040
pullpc
; =========================================================
; Zarby Code
; Handles the layout of OAM tile patterns for the hookshot
pushpc
org $0DABA2 ; LinkOAM_SetWeaponVRAMOffsets
JSL HookMaskCheck
BRA LinkOAM_SetWeaponVRAMOffsets_not_rod_hook
@@ -54,7 +52,7 @@ HookMaskCheck:
{
LDA.w GoldstarOrHookshot : AND.w #$00FF : CMP.w #$0002 : BNE .not_mask
LDA $0202 : AND.w #$00FF : CMP.w #$0003 : BNE .not_mask
; morning star graphics oam tile pattern id
; morning star graphics oam tile pattern id
LDA.w $0109 : AND #$FF00 : ORA.w #$004A
RTL
.not_mask
@@ -73,7 +71,7 @@ CheckForBallChain:
{
LDA #$13 : STA $5D ; Set hookshot state
LDA #$FF : STA $7A ; Start the rotation Timer
JMP LinkItem_BallChain_GfxTransfer ; $D520
JMP LinkItem_BallChain_GfxTransfer ; $D520
RTL
}
@@ -88,7 +86,7 @@ pullpc
; $22D4C0 - Hooked into AncillaDraw_Hookshot @ _08BF2D
BallChain_DrawOrReturn:
{
LDA.w GoldstarOrHookshot : CMP #$02 : BEQ +
LDA.w GoldstarOrHookshot : CMP #$02 : BEQ +
LDA #$00 : STA ($92),Y
RTL
+ ; $22D4CD
@@ -103,11 +101,11 @@ org $08BF0C
JML BallChain_ExtraCollisionLogic
pullpc
; $22D4E0 - Hooked into Hookshot_ExtraCollisionLogic @ 08BF0C
; $22D4E0 - Hooked into Hookshot_ExtraCollisionLogic @ 08BF0C
BallChain_ExtraCollisionLogic:
{
TAX
LDA.w GoldstarOrHookshot : CMP #$02 : BNE + ; Check if using goldstar
LDA.w GoldstarOrHookshot : CMP #$02 : BNE + ; Check if using goldstar
TXA : CMP #$0A : BNE ++
LDA #$FF : BRA ++
+ ; $22D4F2
@@ -115,7 +113,7 @@ BallChain_ExtraCollisionLogic:
++ ; $22D4F3
CMP #$FF : BEQ +++
; AncillaDraw_Hookshot - JSR Ancilla_SetOAM_XY, skips hookshot char
JML $08BF10
JML $08BF10
+++ ; $22D4FB
JML $08BF32 ; AncillaDraw_Hookshot_skip
@@ -129,10 +127,9 @@ LinkItem_BallChain_GfxTransfer:
; Check link direction
LDA $2F : CMP #$04 : BEQ .transfer_gfx_sideways
CMP #$06 : BEQ .transfer_gfx_sideways
REP #$30
LDA #$0040 : LDX #GFX_D600 : LDY #$9AC0
MVN $2B, $7E
MVN $2B, $7E
LDA #$0040 : LDX #GFX_D640 : LDY #$9B40
MVN $2B, $7E
PLB : LDA #GFX_D6A0 : STA $4302
@@ -145,12 +142,12 @@ LinkItem_BallChain_GfxTransfer:
LDA #$0040 : LDX #GFX_D640 : LDY #$9B80
MVN $2B, $7E
PLB : LDA #GFX_D6C0 : STA $4302
.transfer_handle_and_links ; $22D574
LDA #$41E0 : STA $2116
LDA #$1801 : STA $4300
SEP #$30
LDA #$80 : STA $2115
.transfer_loop
LDA $4212 : AND #$80
@@ -224,7 +221,7 @@ GoldstarHandleGfx:
; =========================================================
pushpc
pushpc
org $07ABAF
JSL BallChain_ResetTimer
pullpc
@@ -245,7 +242,7 @@ BallChain_ResetTimer:
; =========================================================
pushpc
pushpc
org $08BFDA
JSL BallChain_DrawChainOrHookshot
NOP #8
@@ -265,7 +262,7 @@ BallChain_DrawChainOrHookshot:
+ ; 22D812
LDA #$0E : STA ($90),Y
JSR BallChainOrHookshot_Modifier ; $D820
ORA.b #$04 ; 02 is gray color
ORA.b #$04 ; 02 is gray color
RTL
}
@@ -290,7 +287,7 @@ pushpc
org $08BF1B ; AncillaDraw_HookshotChain
JSL Goldstar_SetChainProperties
NOP #3
pullpc
pullpc
; $22D850 - Modify the palette
Goldstar_SetChainProperties:
@@ -301,7 +298,7 @@ Goldstar_SetChainProperties:
RTL
.ball_chain ; 22D860
LDA HookshotSpriteData.prop, X
ORA.b #$02
ORA.b #$02
ORA.b $65
RTL
}
@@ -311,7 +308,7 @@ Goldstar_SetChainProperties:
pushpc
org $0DA6E3
JSL LinkOAM_GoldstarWeaponTiles
NOP
NOP
pullpc
LinkOAM_WeaponTiles = $0D839B
@@ -356,14 +353,14 @@ HookshotChain_AncillaDraw:
+ ; $22D914
CMP #$0000 : BNE ++ ; $22D921
LDA Hookshot_box_size_y, X
JML $08BFB5 ; AncillaDraw_HookshotChain
JML $08BFB5 ; AncillaDraw_HookshotChain
++
JSR CheckForSomariaBlock ; CheckAndClearAncillaId has set the timer in A
SEP #$30
; Compare rotation progress
CLC : CMP #$FB : BNE +++
LDA #$06 : STA $2143
LDA #$06 : STA $2143
+++ ; 22D930
BCC ++++
@@ -371,12 +368,12 @@ HookshotChain_AncillaDraw:
++++ ; 22D935
; Compare rotation progress
CLC : CMP #$AB : BNE +++++
CLC : CMP #$AB : BNE +++++
LDA #$06 : STA $2143
+++++ ;22D93F
; Compare rotation progress
CLC : CMP #$5B : BNE ++++++
CLC : CMP #$5B : BNE ++++++
LDA #$06 : STA $2143
++++++ ;22D949
@@ -427,22 +424,22 @@ Routine_22D9A0:
+ ; 22D9B6
AND #$3F : PHX : TAX
LDA Ancilla_GetRadialProjection.multiplier_y, X
LDA Ancilla_GetRadialProjection.multiplier_y, X
STA $4202 : JSR Routine_22DAA0 : STA $4203
; Sign of the projected distance.
LDA Ancilla_GetRadialProjection.meta_sign_y, X
LDA Ancilla_GetRadialProjection.meta_sign_y, X
STA $02 : STZ $03
; Get Y of projected distance
LDA $4216 : ASL
LDA $4217 : ADC #$00 : STA $00 : STZ $01
LDA Ancilla_GetRadialProjection.multiplier_x, X
LDA Ancilla_GetRadialProjection.multiplier_x, X
STA $4202 : JSR Routine_22DAA0 : STA $4203
; Sign of the projected distance.
LDA Ancilla_GetRadialProjection.meta_sign_x, X
LDA Ancilla_GetRadialProjection.meta_sign_x, X
STA $06 : STZ $07
; Get X of projected distance
@@ -473,7 +470,7 @@ Routine_22D9A0:
Goldstar_GetPlayerPosY:
{
ADC $20 : CLC : ADC #$000C
CPX #$00 : BNE +
CPX #$00 : BNE +
SEC : SBC #$000C
RTS
+ ; $22DA3F
@@ -538,7 +535,7 @@ Routine_22DAA0:
CPY #$04 : BNE .alpha
JMP Routine_22DB50 ; $DB50
.alpha ; 22DAA7
CPY #$08 : BNE +
CPY #$08 : BNE +
LDA #$00
RTS
+ ; 22DAAE
@@ -546,11 +543,11 @@ Routine_22DAA0:
LDA #$04
RTS
++ ; 22DAB5
CPY #$10 : BNE +++
CPY #$10 : BNE +++
LDA #$08
RTS
+++ ; 22DABC
CPY #$14 : BNE ++++
CPY #$14 : BNE ++++
LDA #$0C
RTS
++++ ; 22DAC3
@@ -593,17 +590,17 @@ pullpc
; 22DB00
; Hooks into AncillaDraw_HookshotChain @ 08BF94
; Hookshot box size
; Hookshot box size
BallChain_TryAncillaDraw:
{
; Ball Chain timer should be $FF here on first run
LDA $7A : AND #$00FF : CMP #$0000 : BEQ +
LDA $7A : AND #$00FF : CMP #$0000 : BEQ +
CMP #$0001 : BEQ +
SEP #$20
JML HookshotChain_AncillaDraw ; $22D900
JML HookshotChain_AncillaDraw ; $22D900
+ ; $22DB15
LDA Hookshot_box_size_y,X : BNE ++
LDA Hookshot_box_size_y,X : BNE ++
JML $08BF99 ; AncillaDraw_HookshotChain
++ ; $22DB1F
@@ -612,7 +609,7 @@ BallChain_TryAncillaDraw:
; =========================================================
pushpc
pushpc
org $08F7DC
JML BallChain_CheckProximityToLink
pullpc
@@ -704,16 +701,16 @@ Routine_22DBD0:
LDA $2F : LSR : STA $0C76
ASL : TAX
LDA $20 : CLC : ADC AncillaAdd_HookshotData.offset_y, X
LDA $20 : CLC : ADC AncillaAdd_HookshotData.offset_y, X
STA $00 : STA $04
LDA $22 : CLC : ADC AncillaAdd_HookshotData.offset_x, X
LDA $22 : CLC : ADC AncillaAdd_HookshotData.offset_x, X
STA $02 : STA $06
SEP #$30
LDA $00 : STA $0BFE : LDA $01 : STA $0C12 ; Ancilla4 Y
LDA $02 : STA $0C08 : LDA $03 : STA $0C1C ; Ancilla4 X
LDX #$06 : LDA Hookshot_box_size_y,X ; hookshot box size y table
LDX #$06 : LDA Hookshot_box_size_y,X ; hookshot box size y table
SEP #$20
JML $08BFD0 ; AncillaDraw_HookshotChain before Hookshot_CheckProximityToLink
}
@@ -729,7 +726,7 @@ pullpc
HookshotOrBallChain_Extending_ignore_collision:
{
; Ball Chain Timer
LDA $7A : CMP #$00 : BNE +
LDA $7A : CMP #$00 : BNE +
JSL Hookshot_CheckTileCollision ; $07D576
JML $08BE01 ; Hookshot_Extending_ignore_collision continue
+ ; 22DC5E
@@ -746,7 +743,7 @@ ClearAncillaVariables:
STA $7F580E ; en center x-pos
STA $7F5810 ; en center y-pos
STA $7F5803 ; rotation state
SEP #$30
SEP #$30
RTS
}
@@ -816,7 +813,7 @@ CheckAndClearAncillaId:
; =========================================================
; 22E5A0
; Checks for the Somaria block before moving on
; TODO: Replace the JMP $E5DB with the proper code
; TODO: Replace the JMP $E5DB with the proper code
; to handle the somaria block case.
CheckForSomariaBlock:
@@ -891,11 +888,11 @@ CheckForSomariaBlast:
BallChain_StartAnimationFlag:
{
; Restore vanilla code
LDA #$01 : STA $037B
LDA #$01 : STA $037B
; Check if we are rotating the goldstar
LDA $037A : CMP #$04 : BNE +
LDA $037A : CMP #$04 : BNE +
; Animation flag, prevent menu from opening
LDA #$01 : STA $0112
LDA #$01 : STA $0112
+
RTL
}
@@ -909,7 +906,7 @@ org $07AB95
pullpc
; 22EF12
; Hooked inside LinkState_Hookshotting @ 07AB95
; Hooked inside LinkState_Hookshotting @ 07AB95
BallChain_Finish:
{
STZ.w $0300 : STZ.w $037B ; Restore vanilla
@@ -962,7 +959,7 @@ BeginGoldstarOrHookshot:
JSL AncillaAdd_Hookshot
JSL TransferGFXinRAM
RTL
.begin_hookshot
JSL Hookshot_Init
LDA.b #$13 : STA $5D ; Set hookshot state
@@ -1006,7 +1003,7 @@ CheckForSwitchToGoldstar:
{
%CheckNewR_ButtonPress() : BEQ .continue
LDA.w GoldstarOrHookshot : CMP.b #$01 : BEQ .set_hookshot
LDA.b #$01 : STA.w GoldstarOrHookshot
LDA.b #$01 : STA.w GoldstarOrHookshot
JMP .continue
.set_hookshot:
LDA.b #$02 : STA.w GoldstarOrHookshot
@@ -1041,9 +1038,9 @@ org $07AB3A ;$07AB40
RTS
org $008B2A
JML MaybeUploadBirdGraphicsToOam
JML MaybeUploadBirdGraphicsToOam
org $07AD49
LinkHookshot_GetDragged:
JSL Goldstar_GetDragged