Add PlayerTransform, CheckNewRButtonPress fns

This commit is contained in:
scawful
2025-01-19 11:33:56 -05:00
parent c8f6d0e989
commit 202b042b6b
5 changed files with 36 additions and 57 deletions

View File

@@ -1000,7 +1000,7 @@ ApplyGoldstarDamageClass:
CheckForSwitchToGoldstar: CheckForSwitchToGoldstar:
{ {
%CheckNewR_ButtonPress() : BEQ .continue JSL CheckNewRButtonPress : BEQ .continue
LDA.l $7EF342 : CMP.b #$02 : BNE .continue LDA.l $7EF342 : CMP.b #$02 : BNE .continue
LDA.w GoldstarOrHookshot : CMP.b #$01 : BEQ .set_hookshot LDA.w GoldstarOrHookshot : CMP.b #$01 : BEQ .set_hookshot
LDA.b #$01 : STA.w GoldstarOrHookshot LDA.b #$01 : STA.w GoldstarOrHookshot

View File

@@ -108,14 +108,14 @@ LinkState_GameboyForm:
LDA $02B2 : CMP.b #$06 : BEQ .already_gbc LDA $02B2 : CMP.b #$06 : BEQ .already_gbc
LDA $0FFF : BEQ .return ; not in dark world LDA $0FFF : BEQ .return ; not in dark world
.transform .transform
%PlayerTransform() JSL PlayerTransform
LDA #$3B : STA $BC ; change link's sprite LDA #$3B : STA $BC ; change link's sprite
LDA #$06 : STA $02B2 LDA #$06 : STA $02B2
JSL UpdateGbcPalette JSL UpdateGbcPalette
BRA .return BRA .return
.already_gbc .already_gbc
%PlayerTransform() JSL PlayerTransform
LDA #$10 : STA $BC LDA #$10 : STA $BC
STZ $02B2 STZ $02B2
JSL Palette_ArmorAndGloves JSL Palette_ArmorAndGloves

View File

@@ -1,19 +1,3 @@
; =========================================================
; Macros
macro PlayerTransform()
LDY.b #$04 : LDA.b #$23
JSL AddTransformationCloud
LDA.b #$14 : STA.w $0CF8
JSL $0DBB67 ; Link_CalculateSFXPan
ORA.w $0CF8
STA $012E
endmacro
macro CheckNewR_ButtonPress()
LDA.b $F6 : BIT.b #$10
endmacro
; ========================================================= ; =========================================================
; Change Link's sprite by setting $BC to the gfx bank ; Change Link's sprite by setting $BC to the gfx bank
@@ -51,8 +35,7 @@ org $09F7B5 : JSL ForceResetMask_SaveAndQuit
org $3A8000 org $3A8000
StartupMasks: StartupMasks:
{ {
; from vanilla: ; vanilla: bring the screen into force blank after NMI
; bring the screen into force blank after NMI
LDA.b #$80 : STA $13 LDA.b #$80 : STA $13
; set links sprite bank ; set links sprite bank
@@ -60,6 +43,17 @@ StartupMasks:
RTL RTL
} }
PlayerTransform:
{
LDY.b #$04 : LDA.b #$23
JSL AddTransformationCloud
LDA.b #$14 : STA.w $0CF8
JSL $0DBB67 ; Link_CalculateSFXPan
ORA.w $0CF8
STA $012E
RTL
}
ResetToLinkGraphics: ResetToLinkGraphics:
{ {
LDA $0FFF : BNE + LDA $0FFF : BNE +
@@ -197,13 +191,11 @@ Palette_ArmorAndGloves:
; ========================================================= ; =========================================================
; Overworld Palette Persist ; Overworld Palette Persist
Overworld_CgramAuxToMain_Override: Overworld_CgramAuxToMain:
{ {
; Copies the auxiliary CGRAM buffer to the main one ; Copies the auxiliary CGRAM buffer to the main one
; Causes NMI to reupload the palette. ; Causes NMI to reupload the palette.
REP #$20 REP #$20
LDX.b #$00 LDX.b #$00
.loop .loop
@@ -223,10 +215,15 @@ Overworld_CgramAuxToMain_Override:
; tell NMI to upload new CGRAM data ; tell NMI to upload new CGRAM data
INC $15 INC $15
RTL RTL
} }
pushpc
org $02C769 ; Overworld_CgramAuxToMain
JSL Overworld_CgramAuxToMain
RTS
pullpc
; ========================================================= ; =========================================================
LinkState_ResetMaskAnimated: LinkState_ResetMaskAnimated:
@@ -245,7 +242,7 @@ LinkState_ResetMaskAnimated:
LDA.w $0202 : SEC : SBC.b #$13 : BEQ .no_transform LDA.w $0202 : SEC : SBC.b #$13 : BEQ .no_transform
.transform .transform
%PlayerTransform() JSL PlayerTransform
JSL ResetToLinkGraphics JSL ResetToLinkGraphics
.gbc_form .gbc_form
@@ -254,24 +251,14 @@ LinkState_ResetMaskAnimated:
RTL RTL
} }
pushpc
; =========================================================
org $02C769
Overworld_CgramAuxToMain:
JSL Overworld_CgramAuxToMain_Override
RTS
; ========================================================= ; =========================================================
; Change which mask forms have access to the sword. ; Change which mask forms have access to the sword.
; =========================================================
pushpc
; Link_CheckForSwordSwing ; Link_CheckForSwordSwing
org $079CD9 org $079CD9 : JSL LinkItem_CheckForSwordSwing_Masks
JSL LinkItem_CheckForSwordSwing_Masks
pullpc pullpc
LinkItem_CheckForSwordSwing_Masks: LinkItem_CheckForSwordSwing_Masks:
{ {
LDA !CurrentMask : BEQ .return LDA !CurrentMask : BEQ .return
@@ -293,11 +280,11 @@ Link_TransformMask:
{ {
PHB : PHK : PLB PHB : PHK : PLB
PHA ; save mask ID PHA ; save mask ID
%CheckNewR_ButtonPress() : BEQ .return JSL CheckNewRButtonPress : BEQ .return
LDA $6C : BNE .return ; in a doorway LDA $6C : BNE .return ; in a doorway
LDA $0FFC : BNE .return ; can't open menu LDA $0FFC : BNE .return ; can't open menu
%PlayerTransform() JSL PlayerTransform
PLA ; restore mask ID PLA ; restore mask ID
TAY TAY
CPY !CurrentMask : BEQ .unequip ; check if mask is on CPY !CurrentMask : BEQ .unequip ; check if mask is on
@@ -321,8 +308,6 @@ Link_TransformMask:
db $00, $35, $36, $38, $37, $39, $3A, $3B db $00, $35, $36, $38, $37, $39, $3A, $3B
} }
; =========================================================
Link_TransformMoosh: Link_TransformMoosh:
{ {
PHB : PHK : PLB PHB : PHK : PLB
@@ -331,13 +316,13 @@ Link_TransformMoosh:
JMP .done JMP .done
++ ++
LDA.w !CurrentMask : CMP.b #$07 : BNE + LDA.w !CurrentMask : CMP.b #$07 : BNE +
%PlayerTransform() JSL PlayerTransform
JSL ResetToLinkGraphics JSL ResetToLinkGraphics
PLB : RTL PLB : RTL
+ +
LDA.b #$07 : STA.w !CurrentMask LDA.b #$07 : STA.w !CurrentMask
LDA.b #$33 : STA $BC LDA.b #$33 : STA $BC
%PlayerTransform() JSL PlayerTransform
JSL Palette_ArmorAndGloves JSL Palette_ArmorAndGloves
.done .done
PLB PLB
@@ -391,8 +376,6 @@ PrepareQuakeSpell:
RTL RTL
} }
; =========================================================
HandleMovement: HandleMovement:
{ {
LDA $F0 : AND #$08 : BEQ .not_up LDA $F0 : AND #$08 : BEQ .not_up
@@ -752,8 +735,6 @@ Ancilla_Move_X:
BRL Ancilla_RestoreIndex BRL Ancilla_RestoreIndex
} }
; ---------------------------------------------------------
Ancilla_Move_Y: Ancilla_Move_Y:
{ {
LDA.w $0C22, X LDA.w $0C22, X
@@ -790,8 +771,6 @@ Ancilla_Move_Y:
RTS RTS
} }
; =========================================================
Ancilla_Move_Z: Ancilla_Move_Z:
{ {
LDA.w AnciZSpeed, X LDA.w AnciZSpeed, X

View File

@@ -44,14 +44,14 @@ LinkState_CheckForMinishForm:
CMP.b #$00 : BEQ .transform CMP.b #$00 : BEQ .transform
CMP.b #$06 : BCC .return ; don't transform if not human CMP.b #$06 : BCC .return ; don't transform if not human
.transform .transform
%PlayerTransform() JSL PlayerTransform
LDA #$39 : STA $BC ; Change link's sprite LDA #$39 : STA $BC ; Change link's sprite
LDA #$05 : STA $02B2 ; Set the current mask form LDA #$05 : STA $02B2 ; Set the current mask form
BRA .return BRA .return
.already_minish .already_minish
%PlayerTransform() JSL PlayerTransform
JSL ResetToLinkGraphics JSL ResetToLinkGraphics
.return .return