MSU1: Fade in on resume

This commit is contained in:
Bonta
2021-06-12 23:47:46 +02:00
parent a9a929c6f4
commit 183d439ff7
2 changed files with 20 additions and 7 deletions

View File

@@ -86,7 +86,7 @@ db #$20, #$19, #$08, #$31 ; year/month/day
!MSU_LOADED_TRACK = $7F5400 !MSU_LOADED_TRACK = $7F5400
!MSU_RESUME_TRACK = $7F5401 !MSU_RESUME_TRACK = $7F5401
!MSU_RESUME_TIME = $7F5402 ; 4 bytes !MSU_RESUME_TIME = $7F5402 ; 4 bytes
!MSU_RESUME_CANCEL = $7F5406 !MSU_RESUME_CONTROL = $7F5406
!REG_MUSIC_CONTROL = $012B !REG_MUSIC_CONTROL = $012B
;!REG_MUSIC_CONTROL = $012C ;!REG_MUSIC_CONTROL = $012C
!REG_MUSIC_CONTROL_REQUEST = $012C !REG_MUSIC_CONTROL_REQUEST = $012C

25
msu.asm
View File

@@ -123,6 +123,8 @@
!FLAG_MSU_STATUS_AUDIO_BUSY = #$40 !FLAG_MSU_STATUS_AUDIO_BUSY = #$40
!FLAG_MSU_STATUS_DATA_BUSY = #$80 !FLAG_MSU_STATUS_DATA_BUSY = #$80
!FLAG_RESUME_CANCEL = #$01
!FLAG_RESUME_FADEIN = #$02
!REG_CURRENT_MSU_TRACK = $010B !REG_CURRENT_MSU_TRACK = $010B
!REG_CURRENT_VOLUME = $0127 !REG_CURRENT_VOLUME = $0127
@@ -441,7 +443,7 @@ MSUInit:
STA !MSU_LOADED_TRACK STA !MSU_LOADED_TRACK
STA !MSU_RESUME_TRACK STA !MSU_RESUME_TRACK
STA !MSU_RESUME_TIME : STA !MSU_RESUME_TIME+1 : STA !MSU_RESUME_TIME+2 : STA !MSU_RESUME_TIME+3 STA !MSU_RESUME_TIME : STA !MSU_RESUME_TIME+1 : STA !MSU_RESUME_TIME+2 : STA !MSU_RESUME_TIME+3
STA !MSU_RESUME_CANCEL STA !MSU_RESUME_CONTROL
LDA NoBGM : BNE .done LDA NoBGM : BNE .done
@@ -559,7 +561,7 @@ MSUMain:
LDX !REG_MUSIC_CONTROL : BEQ + LDX !REG_MUSIC_CONTROL : BEQ +
JMP .command_ff JMP .command_ff
+ +
LDA !REG_MSU_DELAYED_COMMAND : BEQ .do_fade LDA !REG_MSU_DELAYED_COMMAND : BNE + : JMP .do_fade : +
.check_busy .check_busy
LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_AUDIO_BUSY : BEQ .ready LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_AUDIO_BUSY : BEQ .ready
@@ -568,15 +570,24 @@ MSUMain:
LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_TRACK_MISSING : BEQ .start LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_TRACK_MISSING : BEQ .start
JML SPCContinue JML SPCContinue
.start .start
LDA !MSU_RESUME_CANCEL : BEQ + LDA !MSU_RESUME_CONTROL : AND !FLAG_RESUME_CANCEL : BEQ +
REP #$20 : LDA !REG_MSU_LOADED_TRACK : STA !REG_MSU_TRACK : SEP #$20 REP #$20 : LDA !REG_MSU_LOADED_TRACK : STA !REG_MSU_TRACK : SEP #$20
LDA #$00 : STA !MSU_RESUME_CANCEL LDA !MSU_RESUME_CONTROL : EOR !FLAG_RESUME_CANCEL : STA !MSU_RESUME_CONTROL
JML SPCContinue JML SPCContinue
+ +
LDA !VAL_VOLUME_FULL LDA !VAL_VOLUME_FULL
STA !REG_TARGET_VOLUME STA !REG_TARGET_VOLUME
LDA !MSU_RESUME_CONTROL : AND !FLAG_RESUME_FADEIN : BEQ +
LDA !MSU_RESUME_CONTROL : EOR !FLAG_RESUME_FADEIN : STA !MSU_RESUME_CONTROL
LDA #$00
BRA ++
+
LDA !VAL_VOLUME_FULL
++
STA !REG_CURRENT_VOLUME STA !REG_CURRENT_VOLUME
STA !REG_MSU_VOLUME STA !REG_MSU_VOLUME
LDA !REG_CURRENT_MSU_TRACK : DEC : PHA LDA !REG_CURRENT_MSU_TRACK : DEC : PHA
AND.b #$07 : TAY AND.b #$07 : TAY
PLA : LSR #3 : TAX PLA : LSR #3 : TAX
@@ -677,13 +688,15 @@ MSUMain:
LDA !NMI_COUNTER : !SUB !MSU_RESUME_TIME : PHA LDA !NMI_COUNTER : !SUB !MSU_RESUME_TIME : PHA
LDA !NMI_COUNTER+2 : SBC !MSU_RESUME_TIME+2 : BNE ++ LDA !NMI_COUNTER+2 : SBC !MSU_RESUME_TIME+2 : BNE ++
PLA : CMP MSUResumeTimer : !BGE +++ PLA : CMP MSUResumeTimer : !BGE +++
SEP #$20 : BRA .done_resume SEP #$20
LDA !FLAG_RESUME_FADEIN : BRA .done_resume
++ ++
PLA PLA
+++ +++
SEP #$20 SEP #$20
LDA #$01 : STA !MSU_RESUME_CANCEL LDA !FLAG_RESUME_CANCEL
.done_resume: .done_resume:
STA !MSU_RESUME_CONTROL
LDA #$00 : STA !MSU_RESUME_TRACK LDA #$00 : STA !MSU_RESUME_TRACK
+ +
CPX #07 : BNE + ; Kakariko Village CPX #07 : BNE + ; Kakariko Village