Merge branch 'DRUnstable' into DRVolatile

# Conflicts:
#	doorrando/bugfix/kholdstare_shell_collision.asm
This commit is contained in:
aerinon
2023-08-04 11:32:19 -06:00
5 changed files with 91 additions and 32 deletions

View File

@@ -614,14 +614,17 @@ Ancilla_ReceiveItem:
org $08C505 org $08C505
Ancilla_ReceiveItem_objectFinished: Ancilla_ReceiveItem_objectFinished:
org $08CE93 org $08CE2E
Ancilla_BreakTowerSeal_draw_single_crystal: GTCutscene_AnimateCrystals_NoRotate:
org $08CEB6
GTCutscene_DrawSingleCrystal_SkipCrystal:
org $08CEC3 org $08CEC3
Ancilla_BreakTowerSeal_stop_spawning_sparkles: GTCutscene_DrawSingleCrystal_SkipSparkle:
org $08CF59 org $08CF59
BreakTowerSeal_ExecuteSparkles: GTCutscene_SparkleALot:
org $08F710 org $08F710
Ancilla_SetOam_XY_Long: Ancilla_SetOam_XY_Long:

View File

@@ -101,6 +101,11 @@ StairCleanup: {
rts rts
} }
LookupSpiralOffset_long:
PHB : PHK : PLB
JSR LookupSpiralOffset
PLB : RTL
;Sets the offset in A ;Sets the offset in A
LookupSpiralOffset: { LookupSpiralOffset: {
;where link currently is in $a2: quad in a8 & #$03 ;where link currently is in $a2: quad in a8 & #$03

View File

@@ -110,28 +110,64 @@ BRA .all_dungeons
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
GetRequiredCrystalsForTower: GTCutscene_CrystalMasks:
BEQ + : JSL.l BreakTowerSeal_ExecuteSparkles : + ; thing we wrote over db %00000000 ; 0 crystals
LDA.l NumberOfCrystalsRequiredForTower : CMP.b #$00 : BNE + : JML.l Ancilla_BreakTowerSeal_stop_spawning_sparkles : + db %10000000 ; BIT INDEX DIAGRAM
LDA.l NumberOfCrystalsRequiredForTower : CMP.b #$01 : BNE + : JML.l Ancilla_BreakTowerSeal_draw_single_crystal : + db %00010010 ; 0
LDA.l NumberOfCrystalsRequiredForTower : DEC #2 : TAX db %00010101 ; 5 1
JML.l GetRequiredCrystalsForTower_continue db %10010101 ; 7
db %10110110 ; 4 2
db %00111111 ; 3
db %10111111 ; 7 crystals
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
GetRequiredCrystalsInX: GTCutscene_ConditionalAnimateCrystals:
LDA.l NumberOfCrystalsRequiredForTower : CMP.b #$00 : BNE + PHX : PHX
TAX LDA.l NumberOfCrystalsRequiredForTower : TAX : LDA.l GTCutscene_CrystalMasks,X
RTL 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 + .skip_crystal
SBC.l NumberOfCrystalsRequiredForTower ; carry guaranteed set JML.l GTCutscene_DrawSingleCrystal-3
BRA - ;--------------------------------------------------------------------------------
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 + - CMP.l NumberOfCrystalsRequiredForTower : BCC +
LDA.b #$08 SBC.l NumberOfCrystalsRequiredForTower : BRA - ; carry guaranteed set
+ : DEC : TAX
+ PHY : TAY
LDA.l NumberOfCrystalsRequiredForTower : TAX : LDA.l GTCutscene_CrystalMasks,X
LDX.b #$FF
- LSR : INX : BCC +
DEY
+ BPL -
PLY
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
CheckEnoughCrystalsForGanon: CheckEnoughCrystalsForGanon:

View File

@@ -498,16 +498,21 @@ JSL.l CheckEnoughCrystalsForTower
NOP #4 NOP #4
db #$90 ; BCC db #$90 ; BCC
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
org $08CE0C ; <- 44E0C - ancilla_break_tower_seal.asm : 168 (BEQ #$03 : JSR BreakTowerSeal_ExecuteSparkles : LDX.b #$06) org $08CE0C ; <- 44E0C - ancilla_break_tower_seal.asm : 168 (BEQ #$03 : JSR GTCutscene_SparkleALot : LDX.b #$06)
JML.l GetRequiredCrystalsForTower JML.l GTCutscene_AnimateCrystals_Prep : NOP
NOP #3 LDX.b #$05
GetRequiredCrystalsForTower_continue: 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) 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) org $08CFC9 ; <- 44FC9 - ancilla_break_tower_seal.asm : 414 (RTS)
db #$6B RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
;================================================================================ ;================================================================================

18
msu.asm
View File

@@ -370,8 +370,15 @@ CheckMusicLoadRequest:
; Fade out music if we're changing tracks on a stair transition ; Fade out music if we're changing tracks on a stair transition
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
SpiralStairsPreCheck: SpiralStairsPreCheck:
REP #$20 ; thing we wrote over LDA.l DRMode : BEQ + ; if door rando enabled
LDA.l DRMode : BNE .done ; exit 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 LDA $A0
CMP.w #$000C : BNE + CMP.w #$000C : BNE +
LDA !REG_CURRENT_MSU_TRACK : AND.w #$00FF : CMP.w #59 : BNE .done 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) ; Change music on stair transition (ToH/GT)
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
SpiralStairsPostCheck: SpiralStairsPostCheck:
LDA.l DRMode : BNE .done ; exit if door rando enabled LDA.l DRMode : BEQ + ; if door rando enabled
LDA $A0 LDA.b $A2 : CMP.w #$0007 : BNE .done
LDX.b #$16 : STX !REG_MUSIC_CONTROL_REQUEST
BRA .done
+ LDA $A0
CMP.w #$000C : BNE + CMP.w #$000C : BNE +
; Ganon's tower entrance ; Ganon's tower entrance
LDX $0130 : CPX.b #$F1 : BNE .done ; Check that we were fading out LDX $0130 : CPX.b #$F1 : BNE .done ; Check that we were fading out