diff --git a/Masks/mask_routines.asm b/Masks/mask_routines.asm index cb050d7..8222810 100644 --- a/Masks/mask_routines.asm +++ b/Masks/mask_routines.asm @@ -1,3 +1,7 @@ +; no glove color +org $0DEE24 + db $80 + org $09912C AddTransformationCloud: @@ -7,7 +11,6 @@ Link_CheckNewY_ButtonPress: org $078028 Player_DoSfx2: - org $278000 StartupMasks: { @@ -22,4 +25,4 @@ StartupMasks: } org $008827 -JSL StartupMasks \ No newline at end of file +JSL StartupMasks diff --git a/Masks/wolf_mask.asm b/Masks/wolf_mask.asm index 8d9fec1..d01a570 100644 --- a/Masks/wolf_mask.asm +++ b/Masks/wolf_mask.asm @@ -1,6 +1,51 @@ ; ============================================================================= ; Wolf Mask +; ============================================================================= + +org $098F5B + AddShovelDirt: + +org $098C73 + AddRecoveredFlute: + +org $098024 + AddHitStars: + +org $1DFD5C + DiggingGameGuy_AttemptPrizeSpawn: + + +; ============================================================================= + +org $07D077 + Link_ShovelTileDetect: + +org $07F8D1 +Link_ShovelTileDetect_Long: +{ + PHB : PHK : PLB + JSR Link_ShovelTileDetect + PLB + RTL +} + +org $07802F + Player_DoSfx3: + +org $07A772 +Player_DoSfx3_Long: +{ + PHB : PHK : PLB + JSR Player_DoSfx3 + PLB + RTL +} + +print "Next address for jump in bank07: ", pc + +; ============================================================================= + org $07A3DB LinkItem_Flute: @@ -21,6 +66,7 @@ LinkItem_ShovelAndFlute: org $07A32C LinkItem_WolfMask: { + JSL LinkItem_UsingWolfMask JSR Link_CheckNewY_ButtonPress : BCC .return LDA $3A : AND.b #$BF : STA $3A ; clear the Y button state @@ -75,4 +121,156 @@ WolfPalette: dw #$6565, #$7271, #$14B5, #$459B, #$3D95, #$22D0, #$567C, #$1890 dw #$7616, #$0000 -; ============================================================================= \ No newline at end of file +; ============================================================================= + +LinkItem_Return: +{ + RTL +} + +print pc +LinkItem_UsingWolfMask: +{ + ; Shovel item code + + BIT $3A : BVS .in_use + LDA $6C : BNE LinkItem_Return ; .BRANCH_$3A312 ; (RTS, BASICALLY) + + LDA $F2 ; load unfiltered joypad 1 register (AXLR|????) + CMP #$10 ; R button pressed? + BEQ $03 ; if yes, branch behind the jump that leads to the end and load items instead + JMP LinkItem_Return + ; JSR Link_CheckNewY_ButtonPress : BCC LinkItem_Return ;.BRANCH_$3A312 + + LDA $A320 : STA $3D + + STZ $030D + STZ $0300 + + LDA.b #$01 : STA $037A + LDA.b #$01 : TSB $50 + STZ $2E + +.in_use + + JSR HaltLinkWhenUsingItems ; $AE65 ; $3AE65 IN ROM + + LDA $67 : AND.b #$F0 : STA $67 + + DEC $3D : BMI .continue + + RTL + +.continue + + LDX $030D : INX : STX $030D + + LDA $A320, X : STA $3D + + LDA $A326, X : STA $0300 : CMP.b #$01 : BNE .BRANCH_GAMMA + + LDY.b #$02 + + PHX + + ; JSR $D077 ; $3D077 IN ROM + JSL Link_ShovelTileDetect_Long + + PLX + + LDA $04B2 : BEQ .not_flute_spot + + LDA.b #$1B : JSL Player_DoSfx3_Long + + PHX + + ; Add recovered flute (from digging). Interesting... + LDY.b #$00 + LDA.b #$36 + + JSL AddRecoveredFlute + + PLX + +.not_flute_spot + + LDA $0357 : ORA $035B : AND.b #$01 : BNE .dont_clink + + PHX + + LDY.b #$00 + LDA.b #$16 + + JSL AddHitStars + + PLX + + LDA.b #$05 : JSL Player_DoSfx2 + + BRA .finish_up + +.dont_clink + + PHX + + ; Add shovel dirt? what? I thought these were aftermath tiles + LDY.b #$00 + LDA.b #$17 + + JSL AddShovelDirt + + LDA $03FC : BEQ .digging_game_inactive + + JSL DiggingGameGuy_AttemptPrizeSpawn + +.digging_game_inactive + + PLX + + LDA.b #$12 : JSL Player_DoSfx2 + +.finish_up + + CPX.b #$03 : BNE .return + + STZ $030D + STZ $0300 + + LDA $3A : AND.b #$80 : STA $3A + + STZ $037A + + LDA $50 : AND.b #$FE : STA $50 + +.return + + RTL +} + +; ============================================================================== + +; *$3AE65-$3AE87 LOCAL +HaltLinkWhenUsingItems: +{ + LDA $AD : CMP.b #$02 : BNE .BRANCH_ALPHA + + LDA $0322 : AND.b #$03 : CMP.b #$03 : BNE .BRANCH_ALPHA + + STZ $30 + STZ $31 + STZ $67 + STZ $2A + STZ $2B + STZ $6B + +.BRANCH_ALPHA: + + ; Cane of Somaria transit lines? + LDA $02F5 : BEQ .BRANCH_BETA + + STZ $67 + +.BRANCH_BETA: + + RTS +} \ No newline at end of file diff --git a/Masks/zora_mask.asm b/Masks/zora_mask.asm index 4eebcd7..5e66421 100644 --- a/Masks/zora_mask.asm +++ b/Masks/zora_mask.asm @@ -63,7 +63,7 @@ zora_palette: ; ============================================================================= -LinkItem_UsingZoraMask: +; LinkItem_UsingZoraMask: { } @@ -75,19 +75,23 @@ LinkItem_UsingZoraMask: ; ============================================================================= ; 22E0E0 +FairyFlippers_E0E0: { - LDA $1B - BNE $22E0F7 - LDA $7F500E + LDA $1B ; 1 if the player is in indoors and 0 otherwise. + BNE .alpha ; we are outdoors + + LDA $7F500E ; are we currently underwater? CMP #$01 - BNE $22E0F7 + BNE .alpha ; we are not underwater + LDA #$01 - STA $55 - STZ $5D + STA $55 ; activate cape flag (invisible, invincible) + STZ $5D ; reset player to ground state LDA #$08 - STA $5E + STA $5E ; set the player speed RTL ;------- +.alpha LDA #$01 STA $4D RTL @@ -96,6 +100,7 @@ LinkItem_UsingZoraMask: ; ============================================================================= ; 22E100 +FairyFlippers_E100: { LDA $2F ; The direction the player is currently facing STA $0323 ; Mirror of $2F @@ -106,7 +111,7 @@ LinkItem_UsingZoraMask: NOP LDA $0345 ; Set to 1 when we are in deep water, 0 otherwise CMP #$01 ; Are we in deep water? - BEQ $22E120 + BEQ FairyFlippers_E120 LDA $7F500E CMP #$01 BEQ $22E11C @@ -116,6 +121,7 @@ LinkItem_UsingZoraMask: ; ============================================================================= ; 22E120 +FairyFlippers_E120: { LDA $F0 ; Joypad 1 Register CMP #$40 @@ -146,6 +152,7 @@ LinkItem_UsingZoraMask: ; ============================================================================= ; 22E17D +FairyFlippers_E17D: { LDA $7F500E CMP #$00 @@ -186,6 +193,7 @@ LinkItem_UsingZoraMask: ; Returns to 3C30B below ; Noted changes added +FairyFlippers_SetFlipperAbilities: { LDA $1B ; Flag set to 1 when indoors, 0 otherwise BNE $22E1F7 @@ -209,6 +217,7 @@ LinkItem_UsingZoraMask: ; ============================================================================= ; *$3C2C3-$3C30B LOCAL +Vanilla_UntitledRoutine: { LDA $1B : BNE .alpha ; Set to 1 if indoors, 0 otherwise LDX #$02 @@ -251,6 +260,7 @@ LinkItem_UsingZoraMask: ; ============================================================================= ; 22E260 +FairyFlippers_E260: { LDA $7EF33C ; fairy flippers save ram AND #$00FF @@ -282,7 +292,7 @@ LinkItem_UsingZoraMask: ; Observed behavior of preserving the direction link was facing when diving ; E.g. face left, dive, turn right underwater, and resurface facing left -FairyFlipper_Prepare: +FairyFlippers_Prepare: { JSR FairyFlippers_Main ; $E530 JSL FairyFlippers_HandleMagic ; $22E670 @@ -303,7 +313,8 @@ FairyFlipper_Prepare: LDA #$40 STA $F0 - JMP $079657 ; Apart of LinkState_Swimming + ; TODO: RESTORE ME + ; JMP $079657 ; Apart of LinkState_Swimming .gamma LDA $F0 ; Joypad 1 Register (preserves previous press) @@ -322,12 +333,14 @@ FairyFlippers_RestoreControlHandler: LDA $5D ; Player Handler or "State" ASL TAX - JMP $078106 ; Link_ControlHandler Jump Table Statement + ; TODO: RESTORE ME + ; JMP $078106 ; Link_ControlHandler Jump Table Statement } ; ============================================================================= ; 22E300 +FairyFlippers_E300: { LDA #$00 STA $5D ; Player Handler or "State" @@ -342,6 +355,7 @@ FairyFlippers_RestoreControlHandler: ; ============================================================================= ; 22E340 +FairyFlippers_E340: { LDA $1B ; 1 if indoors, 0 otherwise BEQ $22E34E @@ -359,7 +373,7 @@ FairyFlippers_RestoreControlHandler: ; ============================================================================= ; 22E460 -FairyFlippers_Untitled: +FairyFlippers_E460: { LDA $02E4 ; If flag nonzero, Link cannot move AND #$00FF @@ -385,6 +399,7 @@ FairyFlippers_Untitled: ; ============================================================================= ; 22E500 +FairyFlippers_E500: { CMP #$5A BEQ $22E507 @@ -428,6 +443,7 @@ FairyFlippers_Main: ; ============================================================================= ; 22E5F0 +FairyFlippers_E5F0: { LDA $7EF33C BNE $22E5F7 @@ -446,6 +462,7 @@ FairyFlippers_Main: ; Referenced at: 0D:E507 +FairyFlippers_E600: { LDA $7EF34A AND #$00FF @@ -487,7 +504,8 @@ FairyFlippers_HandleMagic: BNE $22E688 ; branch if != 0 LDA #$3C STA $012E - JMP $22E141 + ; TODO: RESTORE ME + ; JMP $22E141 LDA $7F500D ; load timer BNE $22E69E ; branch if != 0 LDA #$18 @@ -505,6 +523,7 @@ FairyFlippers_HandleMagic: ; ============================================================================= ; 22E700 +FairyFlippers_E700: { STA $F6 STY $FA @@ -527,6 +546,7 @@ FairyFlippers_HandleMagic: ; ============================================================================= ; 22E760 +FairyFlippers_E760: { LDA #$0E10 STA $7EE000 @@ -539,6 +559,7 @@ FairyFlippers_HandleMagic: ; 22E780 ; Jesucristo... +FairyFlippers_E780: { REP #$30 LDY #$0000 @@ -624,6 +645,7 @@ FairyFlippers_HandleMagic: ; ============================================================================= ; 22E830 +FairyFlippers_E830: { ADC #$0020 STA $1CD0