From ce7396ae350049404b53e051fe5ca522b68018f6 Mon Sep 17 00:00:00 2001 From: Bonta <40473493+Bonta0@users.noreply.github.com> Date: Sat, 12 Jun 2021 19:09:24 +0200 Subject: [PATCH] MSU1: Allow resuming any track --- msu.asm | 21 ++++++++++++++++++--- tables.asm | 7 +++++-- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/msu.asm b/msu.asm index a0853b9..f7fc19c 100644 --- a/msu.asm +++ b/msu.asm @@ -165,6 +165,21 @@ IsOverworldTrack: SEC : RTS ;-------------------------------------------------------------------------------- +;================================================================================ +; Check if the track in A should be resumed +;-------------------------------------------------------------------------------- +IsResumableTrack: + PHA + LDA MSUResumeType : BEQ + + PLA + JSR IsOverworldTrack + RTS + + + PLA + SEC +RTS +;-------------------------------------------------------------------------------- + ;================================================================================ ; Extended OST/SPC fallback, decide which track to actually play ;-------------------------------------------------------------------------------- @@ -497,13 +512,13 @@ MSUInit: MSUStopPlaying: PHA : XBA : PHA LDA !MSU_LOADED_TRACK - JSR IsOverworldTrack : BCC + ; dont save if this isnt an overworld track + JSR IsResumableTrack : BCC + ; dont save if we already saved recently REP #$20 LDA !MSU_RESUME_TRACK : AND #$00FF : BEQ ++ LDA !NMI_COUNTER : !SUB !MSU_RESUME_TIME : PHA LDA !NMI_COUNTER+2 : SBC !MSU_RESUME_TIME+2 : BNE +++ - PLA : CMP MSUResumeDelay : !BLT .too_early + PLA : CMP MSUResumeTimer : !BLT .too_early BRA ++ +++ PLA @@ -661,7 +676,7 @@ MSUMain: REP #$20 LDA !NMI_COUNTER : !SUB !MSU_RESUME_TIME : PHA LDA !NMI_COUNTER+2 : SBC !MSU_RESUME_TIME+2 : BNE ++ - PLA : CMP MSUResumeDelay : !BGE +++ + PLA : CMP MSUResumeTimer : !BGE +++ SEP #$20 : BRA .done_resume ++ PLA diff --git a/tables.asm b/tables.asm index 26f3c75..8095852 100644 --- a/tables.asm +++ b/tables.asm @@ -993,10 +993,13 @@ org $30821B ; PC 0x18021B FastFanfare: db $00 ; $00 = Normal fanfare (default) $01 = Fast fanfare org $30821C ; PC 0x18021C -MSUResumeDelay: +MSUResumeType: +db $01 ; Type of tracks to resume #$00 = Everything - #$01 = Overworld (default) +org $30821D ; PC 0x18021D +MSUResumeTimer: dw $0708 ; Number of frames on a different track until we no longer resume (0x708 = 1800 = ~30s) ;-------------------------------------------------------------------------------- -; 0x18021E - 0x18021F (unused) +; 0x18021F - 0x18021F (unused) ;================================================================================ ; $308220 (0x180220) - $30823F (0x18023F) ; Plandomizer Author Name (ASCII) - Leave unused chars as 0