Various bug fixes for Follower Shuffle post-launch
- Fix issue with infinite purple chest item get - Fix issue with Kiki running away on iframe ledge hops - Fix issue with bad follower gfx on screens with followers - Fix issue with Zelda appearing in conditional follower locations
This commit is contained in:
@@ -180,6 +180,10 @@ LDA.b IndoorsFlag : BNE +
|
|||||||
+
|
+
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
|
PostFixMirrorGfx:
|
||||||
|
JSL HandleFollowersAfterMirroring
|
||||||
|
JML FollowerGfxRedraw
|
||||||
|
|
||||||
PostFixOAMGfx:
|
PostFixOAMGfx:
|
||||||
JSL FollowerGfxRedraw
|
JSL FollowerGfxRedraw
|
||||||
REP #$30 : LDA.w #$2000 ; what we wrote over
|
REP #$30 : LDA.w #$2000 ; what we wrote over
|
||||||
|
|||||||
29
follower.asm
29
follower.asm
@@ -77,6 +77,8 @@ org $9EE495
|
|||||||
JSL Kiki_FollowCheck : BRA + : NOP #12 : +
|
JSL Kiki_FollowCheck : BRA + : NOP #12 : +
|
||||||
org $9EE4AF
|
org $9EE4AF
|
||||||
JSL Kiki_BecomeFollower : NOP #2
|
JSL Kiki_BecomeFollower : NOP #2
|
||||||
|
org $89A1B2
|
||||||
|
JSL Kiki_DontScareTheMonke : NOP #3
|
||||||
|
|
||||||
org $868D63
|
org $868D63
|
||||||
JSL SpritePrep_Locksmith : NOP #2 : db $90 ; BCC
|
JSL SpritePrep_Locksmith : NOP #2 : db $90 ; BCC
|
||||||
@@ -84,13 +86,13 @@ org $868D7E
|
|||||||
db $80 ; BRA
|
db $80 ; BRA
|
||||||
org $86BCD9
|
org $86BCD9
|
||||||
JML Locksmith_Chillin_PostMessage
|
JML Locksmith_Chillin_PostMessage
|
||||||
|
org $86BD09
|
||||||
|
JSL Locksmith_BecomeFollower : NOP #2
|
||||||
org $86BD7A ; allow follower pickup after purple chest item
|
org $86BD7A ; allow follower pickup after purple chest item
|
||||||
LDA.b #$00 : STA.w SpriteActivity, X
|
LDA.b #$00 : STA.w SpriteActivity, X
|
||||||
JSL Locksmith_RespondToAnswer_PostItem
|
JSL Locksmith_RespondToAnswer_PostItem
|
||||||
org $86BDB4
|
org $86BDB4
|
||||||
JSL SpriteDraw_LocksmithFollower
|
JSL SpriteDraw_LocksmithFollower
|
||||||
org $86BD09
|
|
||||||
JSL Locksmith_BecomeFollower : NOP #2
|
|
||||||
pullpc
|
pullpc
|
||||||
|
|
||||||
MaybeDeleteFollowersOnDeath:
|
MaybeDeleteFollowersOnDeath:
|
||||||
@@ -421,11 +423,14 @@ DetermineFollowerSpawn:
|
|||||||
PHA
|
PHA
|
||||||
; despawn if pre-requisite not met
|
; despawn if pre-requisite not met
|
||||||
LDA.w SpriteTypeTable, X : CMP.b #$B4 : BNE +
|
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 +
|
+ CMP.b #$B5 : BNE +
|
||||||
LDA.l CrystalsField : AND.b #$05 : CMP.b #$05
|
LDA.l CrystalsField : AND.b #$05 : CMP.b #$05
|
||||||
LDA.b #$FF : ADC.b #$00 : ROR ; flip carry flag
|
LDA.b #$FF : ADC.b #$00 : ROR ; flip carry flag
|
||||||
PLA : RTL
|
.prereq_check
|
||||||
|
PLA : BCC .check_resolved
|
||||||
|
RTL
|
||||||
+
|
+
|
||||||
PLA
|
PLA
|
||||||
.check_resolved
|
.check_resolved
|
||||||
@@ -811,6 +816,18 @@ Kiki_BecomeFollower:
|
|||||||
LDA.b #$0A : STA.l FollowerIndicator
|
LDA.b #$0A : STA.l FollowerIndicator
|
||||||
RTL
|
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:
|
SpritePrep_Locksmith:
|
||||||
LDA.l FollowerTravelAllowed : CMP.b #$02 : BNE .vanilla
|
LDA.l FollowerTravelAllowed : CMP.b #$02 : BNE .vanilla
|
||||||
JSL DetermineFollowerSpawn_locksmith_check : BCS +
|
JSL DetermineFollowerSpawn_locksmith_check : BCS +
|
||||||
@@ -880,8 +897,10 @@ Locksmith_BecomeFollower:
|
|||||||
Locksmith_RespondToAnswer_PostItem:
|
Locksmith_RespondToAnswer_PostItem:
|
||||||
STA.l FollowerIndicator ; what we wrote over
|
STA.l FollowerIndicator ; what we wrote over
|
||||||
LDA.l FollowerTravelAllowed : CMP.b #$02 : BNE .no_despawn
|
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.w SpriteAux, X : BNE .no_despawn
|
||||||
LDA.l Follower_Locksmith : CMP.b #$0C : BNE .no_despawn
|
LDA.l Follower_Locksmith : CMP.b #$0C : BNE .no_despawn
|
||||||
STZ.w SpriteAITable, X
|
.despawn
|
||||||
|
STZ.w SpriteAITable, X
|
||||||
.no_despawn
|
.no_despawn
|
||||||
RTL
|
RTL
|
||||||
|
|||||||
@@ -410,6 +410,8 @@ JSL OnLoadDuckMap
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
; Fix Clobbered Gfx
|
; Fix Clobbered Gfx
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
org $80DB92
|
||||||
|
JSL PostFixMirrorGfx
|
||||||
org $80E259
|
org $80E259
|
||||||
JSL PostFixOAMGfx : NOP
|
JSL PostFixOAMGfx : NOP
|
||||||
|
|
||||||
|
|||||||
2
ram.asm
2
ram.asm
@@ -221,6 +221,7 @@ ItemReceiptMethod = $7E02E9 ;
|
|||||||
;
|
;
|
||||||
TileActBE = $7E02EF ; Bitfield used by breakables and entrances. b b b b d d d d
|
TileActBE = $7E02EF ; Bitfield used by breakables and entrances. b b b b d d d d
|
||||||
; b = Breakables | d = Entrances
|
; 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
|
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
|
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)
|
; b = Boomerang | p = Powder | a = Bow | x = Hammer (tested, never set)
|
||||||
@@ -842,6 +843,7 @@ endmacro
|
|||||||
%assertRAM(CutsceneFlag, $7E02E4)
|
%assertRAM(CutsceneFlag, $7E02E4)
|
||||||
%assertRAM(ItemReceiptMethod, $7E02E9)
|
%assertRAM(ItemReceiptMethod, $7E02E9)
|
||||||
%assertRAM(TileActBE, $7E02EF)
|
%assertRAM(TileActBE, $7E02EF)
|
||||||
|
%assertRAM(LinkThud, $7E02F8)
|
||||||
%assertRAM(FollowerNoDraw, $7E02F9)
|
%assertRAM(FollowerNoDraw, $7E02F9)
|
||||||
%assertRAM(UseY1, $7E0301)
|
%assertRAM(UseY1, $7E0301)
|
||||||
%assertRAM(CurrentYItem, $7E0303)
|
%assertRAM(CurrentYItem, $7E0303)
|
||||||
|
|||||||
@@ -94,6 +94,7 @@ Player_HaltDashAttackLong = $8791B3
|
|||||||
Link_ReceiveItem = $87999D
|
Link_ReceiveItem = $87999D
|
||||||
Link_ReceiveItem_cool_pose = $8799EE
|
Link_ReceiveItem_cool_pose = $8799EE
|
||||||
Link_ReceiveItem_not_cool_pose = $8799F2
|
Link_ReceiveItem_not_cool_pose = $8799F2
|
||||||
|
HandleFollowersAfterMirroring = $87AA8B
|
||||||
LinkHop_FindArbitraryLandingSpot = $87E359
|
LinkHop_FindArbitraryLandingSpot = $87E359
|
||||||
Link_HandleMovingAnimation_FullLongEntry = $87E68F
|
Link_HandleMovingAnimation_FullLongEntry = $87E68F
|
||||||
Link_CheckForEdgeScreenTransition = $87F413
|
Link_CheckForEdgeScreenTransition = $87F413
|
||||||
|
|||||||
Reference in New Issue
Block a user