diff --git a/bugfixes.asm b/bugfixes.asm index fb2dc40..7a6d59a 100644 --- a/bugfixes.asm +++ b/bugfixes.asm @@ -180,6 +180,10 @@ LDA.b IndoorsFlag : BNE + + RTL +PostFixMirrorGfx: + JSL HandleFollowersAfterMirroring + JML FollowerGfxRedraw + PostFixOAMGfx: JSL FollowerGfxRedraw REP #$30 : LDA.w #$2000 ; what we wrote over diff --git a/follower.asm b/follower.asm index eb2f8e0..a296723 100644 --- a/follower.asm +++ b/follower.asm @@ -77,6 +77,8 @@ org $9EE495 JSL Kiki_FollowCheck : BRA + : NOP #12 : + org $9EE4AF JSL Kiki_BecomeFollower : NOP #2 +org $89A1B2 +JSL Kiki_DontScareTheMonke : NOP #3 org $868D63 JSL SpritePrep_Locksmith : NOP #2 : db $90 ; BCC @@ -84,13 +86,13 @@ org $868D7E db $80 ; BRA org $86BCD9 JML Locksmith_Chillin_PostMessage +org $86BD09 +JSL Locksmith_BecomeFollower : NOP #2 org $86BD7A ; allow follower pickup after purple chest item LDA.b #$00 : STA.w SpriteActivity, X JSL Locksmith_RespondToAnswer_PostItem org $86BDB4 JSL SpriteDraw_LocksmithFollower -org $86BD09 -JSL Locksmith_BecomeFollower : NOP #2 pullpc MaybeDeleteFollowersOnDeath: @@ -421,11 +423,14 @@ DetermineFollowerSpawn: PHA ; despawn if pre-requisite not met LDA.w SpriteTypeTable, X : CMP.b #$B4 : BNE + - LDA.l NpcFlagsVanilla : AND.b #$20 : EOR.b #$20 : CMP.b #$20 : PLA : RTL + LDA.l NpcFlagsVanilla : AND.b #$20 : EOR.b #$20 : CMP.b #$20 + BRA .prereq_check + CMP.b #$B5 : BNE + LDA.l CrystalsField : AND.b #$05 : CMP.b #$05 LDA.b #$FF : ADC.b #$00 : ROR ; flip carry flag - PLA : RTL + .prereq_check + PLA : BCC .check_resolved + RTL + PLA .check_resolved @@ -811,6 +816,18 @@ Kiki_BecomeFollower: LDA.b #$0A : STA.l FollowerIndicator RTL +; on return it checks BEQ and if non-zero, kiki get spook +Kiki_DontScareTheMonke: + LDA.b LinkJumping : BEQ .return + LDA.w NoDamage : BNE .no_spook + LDA.w LinkThud : BNE .no_spook +.spook + LDA.b #$01 : RTL +.no_spook + LDA.b #$00 +.return + RTL + SpritePrep_Locksmith: LDA.l FollowerTravelAllowed : CMP.b #$02 : BNE .vanilla JSL DetermineFollowerSpawn_locksmith_check : BCS + @@ -880,8 +897,10 @@ Locksmith_BecomeFollower: Locksmith_RespondToAnswer_PostItem: STA.l FollowerIndicator ; what we wrote over LDA.l FollowerTravelAllowed : CMP.b #$02 : BNE .no_despawn + LDA.l Follower_Locksmith : CMP.b #$0C : BEQ .despawn LDA.w SpriteAux, X : BNE .no_despawn LDA.l Follower_Locksmith : CMP.b #$0C : BNE .no_despawn - STZ.w SpriteAITable, X +.despawn + STZ.w SpriteAITable, X .no_despawn RTL diff --git a/hooks.asm b/hooks.asm index 3198d28..227003c 100755 --- a/hooks.asm +++ b/hooks.asm @@ -410,6 +410,8 @@ JSL OnLoadDuckMap ;================================================================================ ; Fix Clobbered Gfx ;-------------------------------------------------------------------------------- +org $80DB92 +JSL PostFixMirrorGfx org $80E259 JSL PostFixOAMGfx : NOP diff --git a/ram.asm b/ram.asm index 43e6512..b814b71 100644 --- a/ram.asm +++ b/ram.asm @@ -221,6 +221,7 @@ ItemReceiptMethod = $7E02E9 ; ; TileActBE = $7E02EF ; Bitfield used by breakables and entrances. b b b b d d d d ; b = Breakables | d = Entrances +LinkThud = $7E02F8 ; When set, guarantees a thud on landing FollowerNoDraw = $7E02F9 ; When set, prevents follower from drawing and forces a game mode check UseY1 = $7E0301 ; Bitfield for Y-item usage: b p - a x z h r ; b = Boomerang | p = Powder | a = Bow | x = Hammer (tested, never set) @@ -842,6 +843,7 @@ endmacro %assertRAM(CutsceneFlag, $7E02E4) %assertRAM(ItemReceiptMethod, $7E02E9) %assertRAM(TileActBE, $7E02EF) +%assertRAM(LinkThud, $7E02F8) %assertRAM(FollowerNoDraw, $7E02F9) %assertRAM(UseY1, $7E0301) %assertRAM(CurrentYItem, $7E0303) diff --git a/vanillalabels.asm b/vanillalabels.asm index 621d399..4a5d7eb 100644 --- a/vanillalabels.asm +++ b/vanillalabels.asm @@ -94,6 +94,7 @@ Player_HaltDashAttackLong = $8791B3 Link_ReceiveItem = $87999D Link_ReceiveItem_cool_pose = $8799EE Link_ReceiveItem_not_cool_pose = $8799F2 +HandleFollowersAfterMirroring = $87AA8B LinkHop_FindArbitraryLandingSpot = $87E359 Link_HandleMovingAnimation_FullLongEntry = $87E68F Link_CheckForEdgeScreenTransition = $87F413