Merge remote-tracking branch 'upstream/master' into DRUnstable

This commit is contained in:
aerinon
2024-06-18 11:50:26 -06:00
26 changed files with 443 additions and 262 deletions

90
msu.asm
View File

@@ -164,27 +164,27 @@ CheckMusicLoadRequest:
.continue
LDA.l TournamentSeed : BNE +++
LDA.w MSUPackRequest
CMP.w MSUPackCurrent : BEQ +++
CMP.w MSUPackCount : !BLT ++
LDA.l MSUPackRequest
CMP.l MSUPackCurrent : BEQ +++
CMP.l MSUPackCount : !BLT ++
CMP.b #$FE : !BLT +
STA.w MSUPackCurrent
STA.l MSUPackCurrent
SEP #$10
LDA.b #$00
LDX.b #$07
-
STA.w MSUFallbackTable,X
STA.l MSUFallbackTable,X
DEX : BPL -
REP #$10
BRA +++
+ : LDA.w MSUPackCurrent : STA.w MSUPackRequest
++ : STA.w MSUPackCurrent
+ : LDA.l MSUPackCurrent : STA.l MSUPackRequest
++ : STA.l MSUPackCurrent
JSL MSUInit_check_fallback
+++
LDA.w MusicControlRequest : CMP.b #$08 : BEQ ++ ; Mirror SFX is not affected by NoBGM or pack $FE
LDA.l NoBGM : BNE +
LDA.w MSUPackCurrent : CMP.b #$FE : BNE ++
LDA.l MSUPackCurrent : CMP.b #$FE : BNE ++
+ : JMP .mute
++
@@ -246,7 +246,7 @@ CheckMusicLoadRequest:
LDA.l MusicShuffleTable-1,X : DEC : PHA
AND.b #$07 : TAY
PLA : LSR #3 : TAX
LDA.w MSUFallbackTable,X : BEQ .secondary_fallback : CMP.b #$FF : BEQ .mute
LDA.l MSUFallbackTable,X : BEQ .secondary_fallback : CMP.b #$FF : BEQ .mute
- : CPY.b #$00 : BEQ +
LSR : DEY : BRA -
@@ -362,7 +362,7 @@ SpiralStairsPreCheck:
+
LDA.l BigKeyField : AND.w #$0004 : BEQ .done ; Check that we have the GT big key
LDA.w MSUFallbackTable+7 : AND.w #$0004 : BEQ .done ; Check that we have the extended track
LDA.l MSUFallbackTable+7 : AND.w #$0004 : BEQ .done ; Check that we have the extended track
.fade
LDX.b #$F1 : STX.w MusicControlRequest
@@ -419,10 +419,10 @@ MSUInit:
PHP
LDA.b #$00
STA.w MSULoadedTrack
STA.w MSUResumeTrack
STA.w MSUResumeTime : STA.w MSUResumeTime+1 : STA.w MSUResumeTime+2 : STA.w MSUResumeTime+3
STA.w MSUResumeControl
STA.l MSULoadedTrack
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
@@ -449,7 +449,7 @@ MSUInit:
.wait_pack
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_AUDIO_BUSY : BNE .wait_pack
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_TRACK_MISSING : BEQ .check_pack
TXA : STA.w MSUPackCount
TXA : STA.l MSUPackCount
BRA +
; Check the current MSU-1 pack for tracks that require SPC fallback
@@ -471,7 +471,7 @@ MSUInit:
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_TRACK_MISSING : BNE +
SEC
+
LDA.w MSUFallbackTable,X : ROL : STA.w MSUFallbackTable,X
LDA.l MSUFallbackTable,X : ROL : STA.l MSUFallbackTable,X
DEY : BPL .next_track
DEX : BPL +
@@ -492,11 +492,11 @@ MSUInit:
;--------------------------------------------------------------------------------
MSUStopPlaying:
PHA : XBA : PHA
LDA.w MSULoadedTrack
LDA.l MSULoadedTrack
JSR IsResumableTrack : BCC +
; dont save if we already saved recently
REP #$20
LDA.w MSUResumeTrack : AND.w #$00FF : BEQ ++
LDA.l MSUResumeTrack : AND.w #$00FF : BEQ ++
LDA.l NMIFrames : !SUB.w MSUResumeTime : PHA
LDA.l NMIFrames+2 : SBC.w MSUResumeTime+2 : BNE +++
PLA : CMP.l MSUResumeTimer : !BLT .too_early
@@ -505,12 +505,12 @@ PHA : XBA : PHA
PLA
++
; saving
LDA.l NMIFrames : STA.w MSUResumeTime
LDA.l NMIFrames+2 : STA.w MSUResumeTime+2
LDA.l NMIFrames : STA.l MSUResumeTime
LDA.l NMIFrames+2 : STA.l MSUResumeTime+2
SEP #$20
LDA.w MSULoadedTrack : STA.w MSUResumeTrack
LDA.b #$00 : STA.w MSULoadedTrack ; dont take this path if we're calling again
LDA.l MSULoadedTrack : STA.l MSUResumeTrack
LDA.b #$00 : STA.l MSULoadedTrack ; dont take this path if we're calling again
LDA.b #!FLAG_MSU_RESUME : STA.w MSUCTL ; save this track's position
PLA : XBA : PLA
RTS
@@ -541,23 +541,23 @@ MSUMain:
LDX.w MusicControl : BEQ +
JMP .command_ff
+
LDA.w MSUDelayedCommand : BEQ .do_fade
LDA.l MSUDelayedCommand : BEQ .do_fade
.check_busy
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_AUDIO_BUSY : BNE -
.ready
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_TRACK_MISSING : BNE -
.start
LDA.w MSUResumeControl : BIT.b #!FLAG_RESUME_CANCEL : BEQ +
EOR.b #!FLAG_RESUME_CANCEL : STA.w MSUResumeControl
REP #$20 : LDA.w MSULoadedTrack : STA.w MSUTRACK : SEP #$20
LDA.l MSUResumeControl : BIT.b #!FLAG_RESUME_CANCEL : BEQ +
EOR.b #!FLAG_RESUME_CANCEL : STA.l MSUResumeControl
REP #$20 : LDA.l MSULoadedTrack : STA.w MSUTRACK : SEP #$20
BRA -
+
LDA.b #!VAL_VOLUME_FULL
STA.w TargetVolume
LDA.w MSUResumeControl : BIT.b #!FLAG_RESUME_FADEIN : BEQ +
EOR.b #!FLAG_RESUME_FADEIN : STA.w MSUResumeControl
LDA.l MSUResumeControl : BIT.b #!FLAG_RESUME_FADEIN : BEQ +
EOR.b #!FLAG_RESUME_FADEIN : STA.l MSUResumeControl
LDA.b #$00
BRA ++
+
@@ -569,17 +569,17 @@ MSUMain:
LDA.w CurrentMSUTrack : DEC : PHA
AND.b #$07 : TAY
PLA : LSR #3 : TAX
LDA.w MSUFallbackTable,X : BEQ +++ : CMP.b #$FF : BEQ ++
LDA.l MSUFallbackTable,X : BEQ +++ : CMP.b #$FF : BEQ ++
- : CPY.b #$00 : BEQ +
LSR : DEY : BRA -
+
AND.b #$01 : BEQ +++
++ : LDA.w MSUDelayedCommand
++ : LDA.l MSUDelayedCommand
+++ : STA.w MSUCTL
LDA.b #$00
STA.w MSUDelayedCommand
STA.l MSUDelayedCommand
JML SPCContinue
.do_fade:
@@ -642,9 +642,9 @@ MSUMain:
+
CPX.w CurrentControlRequest : BEQ -
LDA.b #$00 : XBA
LDA.w MSUPackCurrent : BEQ +
- : CMP.w MSUPackCount : !BLT +
!SUB.w MSUPackCount : BRA -
LDA.l MSUPackCurrent : BEQ +
- : CMP.l MSUPackCount : !BLT +
!SUB.l MSUPackCount : BRA -
+
JSR MSUStopPlaying
@@ -657,11 +657,11 @@ MSUMain:
DEX : BNE -
+
STA.w MSUTRACK
STA.w MSULoadedTrack
STA.l MSULoadedTrack
SEP #$20
PLX
TXA : CMP.w MSUResumeTrack : BNE + ; dont resume if too late
TXA : CMP.l MSUResumeTrack : BNE + ; dont resume if too late
REP #$20
LDA.l NMIFrames : !SUB.w MSUResumeTime : PHA
LDA.l NMIFrames+2 : SBC.w MSUResumeTime+2 : BNE ++
@@ -674,8 +674,8 @@ MSUMain:
SEP #$20
LDA.b #!FLAG_RESUME_CANCEL
.done_resume:
STA.w MSUResumeControl
LDA.b #$00 : STA.w MSUResumeTrack
STA.l MSUResumeControl
LDA.b #$00 : STA.l MSUResumeTrack
+
CPX.b #$07 : BNE + ; Kakariko Village
LDA.b GameMode : CMP.b #$07 : BNE +
@@ -685,12 +685,12 @@ MSUMain:
+
TXA
++
STA.w MSULoadedTrack
STA.l MSULoadedTrack
STX.w CurrentMSUTrack
LDA.w MSUPackCurrent : CMP.b #$FE : !BLT +
LDA.l MSUPackCurrent : CMP.b #$FE : !BLT +
LDA.b #$00 : BRA ++
+ : LDA.l MSUTrackList-1,X
++ : STA.w MSUDelayedCommand
++ : STA.l MSUDelayedCommand
LDA.l MSUExtendedFallbackList-1,X
CMP.b #17 : BEQ +
CMP.b #22 : BEQ +
@@ -740,9 +740,9 @@ PendantFanfareWait:
LDA.w MSUID+2 : CMP.w #!VAL_MSU_ID_23 : BNE .spc
LDA.w MSUID+4 : CMP.w #!VAL_MSU_ID_45 : BNE .spc
SEP #$20
LDA.w MSUPackCurrent : CMP.b #$FE : !BGE .spc
LDA.l MSUPackCurrent : CMP.b #$FE : !BGE .spc
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_TRACK_MISSING : BNE .spc
LDA.w MSUDelayedCommand : BNE .continue
LDA.l MSUDelayedCommand : BNE .continue
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_AUDIO_PLAYING : BEQ .done
.continue
jml PendantFanfareContinue
@@ -764,9 +764,9 @@ CrystalFanfareWait:
LDA.w MSUID+2 : CMP.w #!VAL_MSU_ID_23 : BNE .spc
LDA.w MSUID+4 : CMP.w #!VAL_MSU_ID_45 : BNE .spc
SEP #$20
LDA.w MSUPackCurrent : CMP.b #$FE : !BGE .spc
LDA.l MSUPackCurrent : CMP.b #$FE : !BGE .spc
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_TRACK_MISSING : BNE .spc
LDA.w MSUDelayedCommand : BNE .continue
LDA.l MSUDelayedCommand : BNE .continue
LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_AUDIO_PLAYING : BEQ .done
.continue
jml CrystalFanfareContinue