From 08c178a97478074aa7ddfb2246b07c05bdd2d7c1 Mon Sep 17 00:00:00 2001 From: aerinon Date: Mon, 10 Apr 2023 12:18:52 -0600 Subject: [PATCH 1/3] Fix Kholdstare shell collision at Lanmo 2 or other tiles where the shell could limit movement. --- .../bugfix/kholdstare_shell_collision.asm | 51 +++++++++++++++++++ doorrando/doorrando.asm | 1 + 2 files changed, 52 insertions(+) create mode 100644 doorrando/bugfix/kholdstare_shell_collision.asm diff --git a/doorrando/bugfix/kholdstare_shell_collision.asm b/doorrando/bugfix/kholdstare_shell_collision.asm new file mode 100644 index 0000000..cfbf7a4 --- /dev/null +++ b/doorrando/bugfix/kholdstare_shell_collision.asm @@ -0,0 +1,51 @@ +pushpc + +org $9E9463 +JSL CheckKholdShellCoordinates +BCC Sprite_A3_KholdstareShell_link_not_close +BRA Sprite_A3_KholdstareShell_link_close +NOP #13 + +Sprite_A3_KholdstareShell_link_close = $9E9478 +Sprite_A3_KholdstareShell_link_not_close = $9E9480 + +pullpc + +CheckKholdShellCoordinates: + +LDA.w $0D30, X +XBA +LDA.w $0D10, X ; full 16 bit X coordinate of sprite + +REP #$21 +SBC.w #$0020 +CMP.b $22 +BCS .not_colliding + +ADC.w #$0040 +CMP.b $22 +BCC .not_colliding + +SEP #$20 +LDA.w $0D20, X +XBA +LDA.w $0D00, X ; full 16 bit Y coordinate of sprite + +REP #$21 +SBC.w #$001F ; could go to 27 and let link squeeze in at Lanmo 2 (please adjust the following one) +CMP.b $20 +BCS .not_colliding + +ADC.w #$0037 +CMP.b $20 +BCC .not_colliding + +SEP #$20 ; collision detected +SEC +RTL + +.not_colliding +SEP #$30 +CLC +RTL + diff --git a/doorrando/doorrando.asm b/doorrando/doorrando.asm index 6511dd2..08bdccd 100644 --- a/doorrando/doorrando.asm +++ b/doorrando/doorrando.asm @@ -58,6 +58,7 @@ incsrc math.asm incsrc hudadditions.asm incsrc dr_lobby.asm incsrc entrance_fixes.asm +incsrc bugfix/kholdstare_shell_collision.asm warnpc $A79C00 incsrc doortables.asm From c424cf431146642e5ecccd1c704e679249e005b1 Mon Sep 17 00:00:00 2001 From: codemann8 Date: Wed, 5 Apr 2023 08:31:30 -0500 Subject: [PATCH 2/3] Symmetrical GTCutscene Crystals --- LTTP_RND_GeneralBugfixes.asm | 11 ++++-- goalitem.asm | 72 +++++++++++++++++++++++++++--------- hooks.asm | 17 ++++++--- 3 files changed, 72 insertions(+), 28 deletions(-) diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index 5da2f9a..555bca0 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -612,14 +612,17 @@ Ancilla_ReceiveItem: org $08C505 Ancilla_ReceiveItem_objectFinished: -org $08CE93 -Ancilla_BreakTowerSeal_draw_single_crystal: +org $08CE2E +GTCutscene_AnimateCrystals_NoRotate: + +org $08CEB6 +GTCutscene_DrawSingleCrystal_SkipCrystal: org $08CEC3 -Ancilla_BreakTowerSeal_stop_spawning_sparkles: +GTCutscene_DrawSingleCrystal_SkipSparkle: org $08CF59 -BreakTowerSeal_ExecuteSparkles: +GTCutscene_SparkleALot: org $08F710 Ancilla_SetOam_XY_Long: diff --git a/goalitem.asm b/goalitem.asm index d4a003f..a2ffc98 100644 --- a/goalitem.asm +++ b/goalitem.asm @@ -110,28 +110,64 @@ BRA .all_dungeons ;-------------------------------------------------------------------------------- -GetRequiredCrystalsForTower: - BEQ + : JSL.l BreakTowerSeal_ExecuteSparkles : + ; thing we wrote over - LDA.l NumberOfCrystalsRequiredForTower : CMP.b #$00 : BNE + : JML.l Ancilla_BreakTowerSeal_stop_spawning_sparkles : + - LDA.l NumberOfCrystalsRequiredForTower : CMP.b #$01 : BNE + : JML.l Ancilla_BreakTowerSeal_draw_single_crystal : + - LDA.l NumberOfCrystalsRequiredForTower : DEC #2 : TAX -JML.l GetRequiredCrystalsForTower_continue +GTCutscene_CrystalMasks: +db %00000000 ; 0 crystals +db %10000000 ; BIT INDEX DIAGRAM +db %00010010 ; 0 +db %00010101 ; 5 1 +db %10010101 ; 7 +db %10110110 ; 4 2 +db %00111111 ; 3 +db %10111111 ; 7 crystals ;-------------------------------------------------------------------------------- -GetRequiredCrystalsInX: - LDA.l NumberOfCrystalsRequiredForTower : CMP.b #$00 : BNE + - TAX - RTL - + +GTCutscene_ConditionalAnimateCrystals: + PHX : PHX + LDA.l NumberOfCrystalsRequiredForTower : TAX : LDA.l GTCutscene_CrystalMasks,X + PLX + - LSR : DEX : BPL - + PLX : BCC .skip_crystal - TXA +.draw_crystal + LDA.b $11 : BEQ + : JML.l GTCutscene_AnimateCrystals_NoRotate ; what we wrote over + + JML.l GTCutscene_AnimateCrystals_NextCrystal+4 -- CMP.l NumberOfCrystalsRequiredForTower : BCC + - SBC.l NumberOfCrystalsRequiredForTower ; carry guaranteed set - BRA - +.skip_crystal + JML.l GTCutscene_DrawSingleCrystal-3 +;-------------------------------------------------------------------------------- +GTCutscene_ConditionalDrawSingleCrystal: + LDA.w $06FA : BEQ .draw_crystal : STZ.w $06FA + LDA.l NumberOfCrystalsRequiredForTower : TAX + LDA.l GTCutscene_CrystalMasks,X : AND.b #$80 : BEQ .skip_crystal +.draw_crystal + LDX.w $0FA0 : PHY ; what we wrote over + JML.l GTCutscene_DrawSingleCrystal+4 +.skip_crystal + JML.l GTCutscene_DrawSingleCrystal_SkipCrystal +;-------------------------------------------------------------------------------- +GTCutscene_AnimateCrystals_Prep: + BEQ + : JSL.l GTCutscene_SparkleALot : + ; thing we wrote over + LDA.l NumberOfCrystalsRequiredForTower : BNE + + JML.l GTCutscene_DrawSingleCrystal_SkipSparkle + + CMP.b #$01 : BNE + + JML.l GTCutscene_DrawSingleCrystal + + INC.w $06FA ; some free ram OWR also uses + JML.l GTCutscene_AnimateCrystals_NextCrystal-2 +;-------------------------------------------------------------------------------- +GTCutscene_ActivateSparkle_SelectCrystal: + LDA.l NumberOfCrystalsRequiredForTower : BNE + + TAX : RTL + + TXA - + INC : CMP.l NumberOfCrystalsRequiredForTower : BNE + - LDA.b #$08 - + : DEC : TAX + - CMP.l NumberOfCrystalsRequiredForTower : BCC + + SBC.l NumberOfCrystalsRequiredForTower : BRA - ; carry guaranteed set + + + PHY : TAY + LDA.l NumberOfCrystalsRequiredForTower : TAX : LDA.l GTCutscene_CrystalMasks,X + LDX.b #$FF + - LSR : INX : BCC + + DEY + + BPL - + PLY RTL ;-------------------------------------------------------------------------------- CheckEnoughCrystalsForGanon: diff --git a/hooks.asm b/hooks.asm index 974eca7..d8c268c 100755 --- a/hooks.asm +++ b/hooks.asm @@ -498,16 +498,21 @@ JSL.l CheckEnoughCrystalsForTower NOP #4 db #$90 ; BCC ;-------------------------------------------------------------------------------- -org $08CE0C ; <- 44E0C - ancilla_break_tower_seal.asm : 168 (BEQ #$03 : JSR BreakTowerSeal_ExecuteSparkles : LDX.b #$06) -JML.l GetRequiredCrystalsForTower -NOP #3 -GetRequiredCrystalsForTower_continue: +org $08CE0C ; <- 44E0C - ancilla_break_tower_seal.asm : 168 (BEQ #$03 : JSR GTCutscene_SparkleALot : LDX.b #$06) +JML.l GTCutscene_AnimateCrystals_Prep : NOP +LDX.b #$05 +GTCutscene_AnimateCrystals_NextCrystal: +JML.l GTCutscene_ConditionalAnimateCrystals +;-------------------------------------------------------------------------------- +org $08CE93 +GTCutscene_DrawSingleCrystal: +JML.l GTCutscene_ConditionalDrawSingleCrystal ;-------------------------------------------------------------------------------- org $08CF19 ; <- 44F19 - ancilla_break_tower_seal.asm : 336 (TXA : AND.b #$07 : TAX) -JSL.l GetRequiredCrystalsInX +JSL.l GTCutscene_ActivateSparkle_SelectCrystal ;-------------------------------------------------------------------------------- org $08CFC9 ; <- 44FC9 - ancilla_break_tower_seal.asm : 414 (RTS) -db #$6B +RTL ;-------------------------------------------------------------------------------- ;================================================================================ From 653f66e57a6a1fe19eae667a4892de702166d747 Mon Sep 17 00:00:00 2001 From: codemann8 Date: Fri, 7 Apr 2023 11:48:53 -0500 Subject: [PATCH 3/3] Fix for Hera music silence --- doorrando/spiral.asm | 5 +++++ msu.asm | 18 ++++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/doorrando/spiral.asm b/doorrando/spiral.asm index 81f8533..a0c0ae7 100644 --- a/doorrando/spiral.asm +++ b/doorrando/spiral.asm @@ -101,6 +101,11 @@ StairCleanup: { rts } +LookupSpiralOffset_long: + PHB : PHK : PLB + JSR LookupSpiralOffset + PLB : RTL + ;Sets the offset in A LookupSpiralOffset: { ;where link currently is in $a2: quad in a8 & #$03 diff --git a/msu.asm b/msu.asm index 5fd40b2..62322e1 100644 --- a/msu.asm +++ b/msu.asm @@ -370,8 +370,15 @@ CheckMusicLoadRequest: ; Fade out music if we're changing tracks on a stair transition ;-------------------------------------------------------------------------------- SpiralStairsPreCheck: - REP #$20 ; thing we wrote over - LDA.l DRMode : BNE .done ; exit if door rando enabled + LDA.l DRMode : BEQ + ; if door rando enabled + JSL LookupSpiralOffset_long + REP #$30 : AND.w #$00FF : ASL #2 : TAX + LDA.l SpiralTable,X + SEP #$10 : TAX : CPX.b #$07 : BNE .done ; check if hera boss + JSL CheckHeraBossDefeated : BCS .done + LDX.b #$F1 : STX !REG_MUSIC_CONTROL_REQUEST + BRA .done + + REP #$20 ; thing we wrote over LDA $A0 CMP.w #$000C : BNE + LDA !REG_CURRENT_MSU_TRACK : AND.w #$00FF : CMP.w #59 : BNE .done @@ -401,8 +408,11 @@ SpiralStairsPreCheck: ; Change music on stair transition (ToH/GT) ;-------------------------------------------------------------------------------- SpiralStairsPostCheck: - LDA.l DRMode : BNE .done ; exit if door rando enabled - LDA $A0 + LDA.l DRMode : BEQ + ; if door rando enabled + LDA.b $A2 : CMP.w #$0007 : BNE .done + LDX.b #$16 : STX !REG_MUSIC_CONTROL_REQUEST + BRA .done + + LDA $A0 CMP.w #$000C : BNE + ; Ganon's tower entrance LDX $0130 : CPX.b #$F1 : BNE .done ; Check that we were fading out