From ba660409bfb20bcd37a4d287c39788b7e35295e1 Mon Sep 17 00:00:00 2001 From: Kara Alexandra Date: Sat, 21 May 2022 17:50:20 -0700 Subject: [PATCH] Bees in beemode only target enemies they can actually affect --- hooks.asm | 9 ++++++ special_weapons.asm | 70 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+) diff --git a/hooks.asm b/hooks.asm index 14916d8..f502923 100755 --- a/hooks.asm +++ b/hooks.asm @@ -2836,6 +2836,15 @@ BRA + : NOP #15 : + org $1EB5E8 ; bank_1E.asm@9387 (LDA #$03 : STA $0D80, X) JSL ArrghusBoing ;-------------------------------------------------------------------------------- +org $1EDFAF ; bank_1E.asm@16607 (.next_sprite) +JSL BeeCheckTarget +BCS .bee_valid_target +BRA .bee_unsuitable_target +NOP #48 +.bee_unsuitable_target +skip 11 +.bee_valid_target +;-------------------------------------------------------------------------------- ;================================================================================ ; Variable Ganon Vulnerability diff --git a/special_weapons.asm b/special_weapons.asm index a847e7d..df6bbbd 100644 --- a/special_weapons.asm +++ b/special_weapons.asm @@ -515,3 +515,73 @@ ArrghusBoing: ; what we wrote over LDA.b #$03 STA.w $0D80, X + RTL +;-------------------------------------------------------------------------------- +BeeCheckTarget: +CPY.w $0FA0 +BEQ .unsuitable_target + +LDA.w $0DD0,Y +CMP.b #$09 +BCC .unsuitable_target + +LDA.w $0F00,Y +BNE .unsuitable_target + +; in bee-mode skip targets that the bee can't hurt +LDA.l SpecialWeapons : CMP.b #$06 : BNE + +JSR BeeCheckDamage +CMP.b #$00 : BEQ .unsuitable_target ++ + +LDA.w $0E40,Y +BMI .potential_target + +LDA.w $0F20,Y +CMP.w $0F20,X +BNE .unsuitable_target + +LDA.w $0F60,Y +AND.b #$40 +BEQ + +LDA.l SpecialWeapons : CMP.b #$06 : BNE .unsuitable_target +; in bee mode, allow targetting anti-fairies, bunny beams, and keese +LDA.w $0E20,Y +CMP.b #$15 : BEQ + ; anti-fairy +CMP.b #$6F : BEQ + ; keese +CMP.b #$D1 : BEQ + ; bunny beam +BRA .unsuitable_target ++ + +LDA.w $0BA0,Y +BEQ .valid_target +BRA .unsuitable_target + +.potential_target +LDA.w $0EB0,X +BEQ .unsuitable_target + +LDA.w $0CD2,Y +AND.b #$40 +BNE .valid_target + +.unsuitable_target +CLC : RTL + +.valid_target +SEC : RTL +;-------------------------------------------------------------------------------- +BeeCheckDamage: +PHX : PHP +REP #$20 +LDA.w $0E20,Y : AND.w #$00FF +ASL #4 +SEP #$20 +ORA.w $0ED0,X +REP #$30 +TAX +SEP #$20 +JSL LookupDamageLevel +SEP #$10 +PLP : PLX +RTS