From 936ff5a882eec6ed0808a047145b925f6deecff7 Mon Sep 17 00:00:00 2001 From: codemann8 Date: Fri, 16 May 2025 22:20:48 -0500 Subject: [PATCH 1/9] Locksmith follower now behaves closer to vanilla --- follower.asm | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/follower.asm b/follower.asm index a296723..cde732a 100644 --- a/follower.asm +++ b/follower.asm @@ -862,11 +862,18 @@ dw 0, 0 : db $EC, $00, $00, $02 db $00, $00, $00, $0E, $00, $00, $0E, $0E, $00, $0E, $00, $0E, $0E Locksmith_Chillin_PostMessage: + LDA.w SpriteAux, X : BEQ + + ; when a follower is stored, merely walk near them + LDA.w SpritePosXLow, X : PHA + JSL Follower_CheckCollision : BCC .return + BRA .continue + + LDA.w SpritePosXLow, X : PHA - SEC : SBC.b #$0A : STA.w SpritePosXLow, X - LDA.w SpritePosYLow, X : PHA - SEC : SBC.b #$0A : STA.w SpritePosYLow, X - JSL Follower_CheckCollision : BCC .return + SEC : SBC.b #$10 : STA.w SpritePosXLow, X + LDA.b #$01 : STA.w SpriteVelocityX, X + JSL Sprite_Get16BitCoords_long + JSL Follower_CheckTileCollision : BNE .return +.continue INC.w SpriteActivity, X ; award follower LDA.l FollowerIndicator : CMP.b #$0C : BEQ .purple_chest_prize LDA.l FollowerTravelAllowed : CMP.b #$02 : BEQ .return @@ -876,7 +883,6 @@ Locksmith_Chillin_PostMessage: .purple_chest_prize INC.w SpriteActivity, X ; prep for purple chest prize .return - PLA : STA.w SpritePosYLow, X PLA : STA.w SpritePosXLow, X JML $86BD08 ; jump back to immediately RTS @@ -899,7 +905,6 @@ Locksmith_RespondToAnswer_PostItem: 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 .despawn STZ.w SpriteAITable, X .no_despawn From faadd1d7f1ce119125384ae72bd31a1ffb21a189 Mon Sep 17 00:00:00 2001 From: codemann8 Date: Thu, 5 Jun 2025 19:50:49 -0500 Subject: [PATCH 2/9] Fixing boss behavior in Swamp Palace Arrghus' room --- enemizer/bosses_moved.asm | 13 +++++++++++++ enemizer/hooks/bosses_hooks.asm | 7 +++++++ vanillalabels.asm | 1 + 3 files changed, 21 insertions(+) diff --git a/enemizer/bosses_moved.asm b/enemizer/bosses_moved.asm index c5f518c..c11674d 100644 --- a/enemizer/bosses_moved.asm +++ b/enemizer/bosses_moved.asm @@ -288,3 +288,16 @@ new_trinexx_code: RTL ;-------------------------------------------------------------------------------- + +;================================================================================ +; Check if water tile in Swamp boss room, skip interaction +;-------------------------------------------------------------------------------- +swamp_boss_tile_interaction: + LDA.l Sprite_ReducedTileInteractionTable, X : BEQ .return + CPX.b #$09 : BNE .return ; return if non-water tile + LDX.b IndoorsFlag : BEQ .return ; return if overworld + LDX.b RoomIndex : CPX.b #$06 : BNE .return ; return if not swamp boss room + LDA.b #$00 +.return + RTL +;-------------------------------------------------------------------------------- diff --git a/enemizer/hooks/bosses_hooks.asm b/enemizer/hooks/bosses_hooks.asm index f64c68f..5ae4f0b 100644 --- a/enemizer/hooks/bosses_hooks.asm +++ b/enemizer/hooks/bosses_hooks.asm @@ -39,3 +39,10 @@ JSL new_kholdstare_code ; Write new gfx in the vram org $1DAD67 ; sprite_trinexx.asm (62) : LDA.b #$03 : STA $0DC0, X JSL new_trinexx_code : NOP ;-------------------------------------------------------------------------------- + +;================================================================================ +; Swamp Boss Room Water Fix +;-------------------------------------------------------------------------------- +org $06E81A +JSL swamp_boss_tile_interaction +;-------------------------------------------------------------------------------- diff --git a/vanillalabels.asm b/vanillalabels.asm index 4a5d7eb..fb40811 100644 --- a/vanillalabels.asm +++ b/vanillalabels.asm @@ -286,4 +286,5 @@ Overworld_Entrance_ID = $9BBB73 SwordPaletteOffsets = $9BEBB4 ShieldPaletteOffsets = $9BEBC1 LinkMailPalettesOffsets = $9BEC06 +Sprite_ReducedTileInteractionTable = $9DF6CF RoomData_ObjectDataPointers = $9F8000 From baec6954a35aaa493565f02b573f4435ab6ccd6d Mon Sep 17 00:00:00 2001 From: codemann8 Date: Thu, 5 Jun 2025 20:52:13 -0500 Subject: [PATCH 3/9] Reset MSU Resume on S+Q --- events.asm | 6 +++++- hooks.asm | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/events.asm b/events.asm index 0f3b39c..728c725 100644 --- a/events.asm +++ b/events.asm @@ -61,9 +61,13 @@ OnDungeonExit: PLP : PLA RTL ;-------------------------------------------------------------------------------- +OnSave: + JSL MSUResumeReset + REP #$30 : LDX.w #$0002 +RTL +;-------------------------------------------------------------------------------- OnQuit: JSL SQEGFix - JSL MSUResumeReset LDA.b #$00 : STA.l AltTextFlag ; bandaid patch bug with mirroring away from text LDA.b #$10 : STA.b MAINDESQ ; thing we wrote over RTL diff --git a/hooks.asm b/hooks.asm index 227003c..a0fbe1e 100755 --- a/hooks.asm +++ b/hooks.asm @@ -366,8 +366,8 @@ BRA AfterFileWrittenChecks org $80881F ; <- Bank00.asm : 1011 (STY $01FE) AfterFileWrittenChecks: ;-------------------------------------------------------------------------------- -org $808951 ; <- Bank00.asm : 1278 (LDX $1FFE : LDA $00848A, X : TAY : PHY) -LDX.w #$0002 +org $80894F ; <- Bank00.asm : 1278 (LDX $1FFE : LDA $00848A, X : TAY : PHY) +JSL OnSave : NOP ;-------------------------------------------------------------------------------- org $8CCE85 ; <- Bank0C.asm : 1953 (LDA $C8 : ASL A : INC #2 : STA $701FFE) NOP #4 From e266d351cd9c220b6e8f595a415c224017e3b282 Mon Sep 17 00:00:00 2001 From: codemann8 Date: Sun, 8 Jun 2025 14:34:16 -0500 Subject: [PATCH 4/9] Fix issue with despawning follower sprite after purple chest item get --- follower.asm | 1 + 1 file changed, 1 insertion(+) diff --git a/follower.asm b/follower.asm index cde732a..d857700 100644 --- a/follower.asm +++ b/follower.asm @@ -905,6 +905,7 @@ Locksmith_RespondToAnswer_PostItem: 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 + JSL DetermineFollowerSpawn_include_stored : BCC .no_despawn .despawn STZ.w SpriteAITable, X .no_despawn From d19e22cc7da6c97d3805759db3af4ca97d0ffcbf Mon Sep 17 00:00:00 2001 From: codemann8 Date: Tue, 10 Jun 2025 02:47:08 -0500 Subject: [PATCH 5/9] Fix issue with Boots not showing in menu until S+Q --- pendantcrystalhud.asm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pendantcrystalhud.asm b/pendantcrystalhud.asm index 69549fb..2b1cb66 100644 --- a/pendantcrystalhud.asm +++ b/pendantcrystalhud.asm @@ -168,7 +168,7 @@ RTL ;-------------------------------------------------------------------------------- ChangeBootsColorForFakeBoots: LDA.l FakeBoots : AND.w #$00FF : BEQ + - LDA.l EquipmentSRAM+$15 : AND.w #$00FF : BNE + + LDA.l BootsEquipment : AND.w #$00FF : BNE + LDA.w #$F851 ; address of ItemMenu_ItemIcons_usused_nothing, which has the fake boots now BRA ++ + LDA.w #$F821 ; address of ItemMenu_ItemIcons_boots From 4088698af944119040f2d1b62119298ada54e58f Mon Sep 17 00:00:00 2001 From: codemann8 Date: Thu, 12 Jun 2025 00:54:23 -0500 Subject: [PATCH 6/9] Undo MSU Kak Music Fix --- events.asm | 6 ------ hooks.asm | 4 ++-- msu.asm | 15 +++------------ 3 files changed, 5 insertions(+), 20 deletions(-) diff --git a/events.asm b/events.asm index 728c725..0891353 100644 --- a/events.asm +++ b/events.asm @@ -60,12 +60,6 @@ OnDungeonExit: JSL SetSilverBowMode PLP : PLA RTL -;-------------------------------------------------------------------------------- -OnSave: - JSL MSUResumeReset - REP #$30 : LDX.w #$0002 -RTL -;-------------------------------------------------------------------------------- OnQuit: JSL SQEGFix LDA.b #$00 : STA.l AltTextFlag ; bandaid patch bug with mirroring away from text diff --git a/hooks.asm b/hooks.asm index a0fbe1e..227003c 100755 --- a/hooks.asm +++ b/hooks.asm @@ -366,8 +366,8 @@ BRA AfterFileWrittenChecks org $80881F ; <- Bank00.asm : 1011 (STY $01FE) AfterFileWrittenChecks: ;-------------------------------------------------------------------------------- -org $80894F ; <- Bank00.asm : 1278 (LDX $1FFE : LDA $00848A, X : TAY : PHY) -JSL OnSave : NOP +org $808951 ; <- Bank00.asm : 1278 (LDX $1FFE : LDA $00848A, X : TAY : PHY) +LDX.w #$0002 ;-------------------------------------------------------------------------------- org $8CCE85 ; <- Bank0C.asm : 1953 (LDA $C8 : ASL A : INC #2 : STA $701FFE) NOP #4 diff --git a/msu.asm b/msu.asm index 1b66f16..9ae52a8 100644 --- a/msu.asm +++ b/msu.asm @@ -429,7 +429,9 @@ MSUInit: LDA.b #$00 STA.l MSULoadedTrack - JSL MSUResumeReset + STA.l MSUResumeTrack + STA.l MSUResumeTime : STA.l MSUResumeTime+1 : STA.l MSUResumeTime+2 : STA.l MSUResumeTime+3 + STA.l MSUResumeControl LDA.l NoBGM : BNE .done @@ -494,17 +496,6 @@ MSUInit: ;-------------------------------------------------------------------------------- -;================================================================================ -; Purge MSU Resume values -;-------------------------------------------------------------------------------- -MSUResumeReset: - LDA.b #$00 - STA.l MSUResumeTrack - STA.l MSUResumeTime : STA.l MSUResumeTime+1 : STA.l MSUResumeTime+2 : STA.l MSUResumeTime+3 - STA.l MSUResumeControl -RTL -;-------------------------------------------------------------------------------- - ;================================================================================ ; Stop MSU-1 audio track and save the current position when approriate ;-------------------------------------------------------------------------------- From 021ba9d8a658988c07d32cca89e2565abba33f6b Mon Sep 17 00:00:00 2001 From: codemann8 Date: Thu, 12 Jun 2025 00:58:46 -0500 Subject: [PATCH 7/9] Actual fix for issue with no music in LH after S+Q from Kakariko --- darkworldspawn.asm | 1 - events.asm | 11 +++++++++++ hooks.asm | 5 ++++- msu.asm | 18 +++++++++++++----- 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/darkworldspawn.asm b/darkworldspawn.asm index dca2cc8..1ed404d 100644 --- a/darkworldspawn.asm +++ b/darkworldspawn.asm @@ -2,7 +2,6 @@ ; Dark World Spawn Location Fix & Master Sword Grove Fix ;-------------------------------------------------------------------------------- DarkWorldSaveFix: - LDA.b #$70 : PHA : PLB ; thing we wrote over - data bank change JSL MasterSwordFollowerClear JML StatSaveCounter ;-------------------------------------------------------------------------------- diff --git a/events.asm b/events.asm index 0891353..6247a7a 100644 --- a/events.asm +++ b/events.asm @@ -60,12 +60,23 @@ OnDungeonExit: JSL SetSilverBowMode PLP : PLA RTL +;-------------------------------------------------------------------------------- +OnSave: + LDA.b #$70 : PHA : PLB ; thing we wrote over - data bank change + JSL DarkWorldSaveFix + JML MSUResumeReset +;-------------------------------------------------------------------------------- OnQuit: JSL SQEGFix LDA.b #$00 : STA.l AltTextFlag ; bandaid patch bug with mirroring away from text LDA.b #$10 : STA.b MAINDESQ ; thing we wrote over RTL ;-------------------------------------------------------------------------------- +OnDeathNoSave: + JSL MSUResumeReset + LDA.b #$05 : STA.b $10 ; what we wrote over +RTL +;-------------------------------------------------------------------------------- OnUncleItemGet: PHA diff --git a/hooks.asm b/hooks.asm index 227003c..941bdde 100755 --- a/hooks.asm +++ b/hooks.asm @@ -1874,11 +1874,14 @@ JSL CalculateSignIndex ; Dark World Spawn Location Fix & Follower Fixes ;-------------------------------------------------------------------------------- org $80894A ; <- 94A -PHB : JSL DarkWorldSaveFix +PHB : JSL OnSave ;-------------------------------------------------------------------------------- org $828046 ; <- 10046 - Bank02.asm : 217 (JSL EnableForceBlank) (Start of Module_LoadFile) JSL OnFileLoad ;-------------------------------------------------------------------------------- +org $89F5DF +JSL OnDeathNoSave +;-------------------------------------------------------------------------------- org $8280A2 JSL GetCurrentWorldForLoad ;-------------------------------------------------------------------------------- diff --git a/msu.asm b/msu.asm index 9ae52a8..37adba5 100644 --- a/msu.asm +++ b/msu.asm @@ -427,11 +427,7 @@ StoreMusicOnDeath: MSUInit: PHP - LDA.b #$00 - STA.l MSULoadedTrack - STA.l MSUResumeTrack - STA.l MSUResumeTime : STA.l MSUResumeTime+1 : STA.l MSUResumeTime+2 : STA.l MSUResumeTime+3 - STA.l MSUResumeControl + JSL MSUResumeReset LDA.l NoBGM : BNE .done @@ -496,6 +492,18 @@ MSUInit: ;-------------------------------------------------------------------------------- +;================================================================================ +; Purge MSU Resume values +;-------------------------------------------------------------------------------- +MSUResumeReset: + LDA.b #$00 + STA.l MSULoadedTrack + STA.l MSUResumeTrack + STA.l MSUResumeTime : STA.l MSUResumeTime+1 : STA.l MSUResumeTime+2 : STA.l MSUResumeTime+3 + STA.l MSUResumeControl +RTL +;-------------------------------------------------------------------------------- + ;================================================================================ ; Stop MSU-1 audio track and save the current position when approriate ;-------------------------------------------------------------------------------- From d8341c650df5f81d9b96f4a94d637407f3f43b68 Mon Sep 17 00:00:00 2001 From: codemann8 Date: Thu, 12 Jun 2025 10:28:38 -0500 Subject: [PATCH 8/9] Fixed issue with Kiki running away at maze if Link spawns from Sanc --- follower.asm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/follower.asm b/follower.asm index d857700..1d1f780 100644 --- a/follower.asm +++ b/follower.asm @@ -793,7 +793,7 @@ Kiki_OfferToFollow: PHA LDA.w SpriteTimerE, X : BNE .skip_collision_check PLA - JML Sprite_ShowMessageFromPlayerContact ; what we wrote over + JML Sprite_ShowMessageUnconditional ; what we wrote over .skip_collision_check PLA CLC : RTL From 1995d8747c1d238100f584fe7d27debbb602dd82 Mon Sep 17 00:00:00 2001 From: codemann8 Date: Fri, 13 Jun 2025 23:39:32 -0500 Subject: [PATCH 9/9] Fixed issue with Quake scaring Kiki --- follower.asm | 1 + 1 file changed, 1 insertion(+) diff --git a/follower.asm b/follower.asm index 1d1f780..ae6a777 100644 --- a/follower.asm +++ b/follower.asm @@ -819,6 +819,7 @@ RTL ; on return it checks BEQ and if non-zero, kiki get spook Kiki_DontScareTheMonke: LDA.b LinkJumping : BEQ .return + CMP.b #$02 : BEQ .no_spook ; needed for quake usage LDA.w NoDamage : BNE .no_spook LDA.w LinkThud : BNE .no_spook .spook