MSU coding style cleanup

This commit is contained in:
qwertymodo
2019-12-19 11:42:44 -08:00
parent 605a344368
commit d9481fe346
3 changed files with 99 additions and 57 deletions

View File

@@ -1449,8 +1449,8 @@ JSL.l GetMagicBatItem
; MSU Music ; MSU Music
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
org $0080D7 ; <- D7 - Bank00.asm:172 (SEP #$30) org $0080D7 ; <- D7 - Bank00.asm:172 (SEP #$30)
JML msu_main : NOP JML MSUMain : NOP
spc_continue: SPCContinue:
org $028B7A ; <- C220 A5A0 - Bank02.asm:2225 (REP #$20 : LDA $A0) org $028B7A ; <- C220 A5A0 - Bank02.asm:2225 (REP #$20 : LDA $A0)
JSL SpiralStairsPreCheck JSL SpiralStairsPreCheck
@@ -1462,30 +1462,30 @@ org $02D6E8 ; <- 9C0A01 - Bank02.asm:10811 (STZ $010A)
NOP #3 NOP #3
org $08C421 ; <- AD4021 F005 - ancilla_receive_item.asm:108 (LDA $2140 : BEQ .wait_for_music) org $08C421 ; <- AD4021 F005 - ancilla_receive_item.asm:108 (LDA $2140 : BEQ .wait_for_music)
JML pendant_fanfare : NOP JML PendantFanfareWait : NOP
pendant_continue: PendantFanfareContinue:
org $08C42B org $08C42B
pendant_done: PendantFanfareDone:
org $08C62A ; <- AD4021 D008 - ancilla_receive_item.asm:442 (LDA $2140 : BNE .waitForSilence) org $08C62A ; <- AD4021 D008 - ancilla_receive_item.asm:442 (LDA $2140 : BNE .waitForSilence)
JML crystal_fanfare : NOP JML CrystalFanfareWait : NOP
crystal_done: CrystalFanfareDone:
org $08C637 org $08C637
crystal_continue: CrystalFanfareContinue:
org $0988A0 ; <- 8D2C01 8009 - ancilla_init.asm:1179 (STA $012C : BRA .doneWithSoundEffects) org $0988A0 ; <- 8D2C01 8009 - ancilla_init.asm:1179 (STA $012C : BRA .doneWithSoundEffects)
JML fanfare_preload : NOP JML FanfarePreload : NOP
org $09F2A7 ; <- 8F27C27E - module_death.asm:56 (STA $7EC227) org $09F2A7 ; <- 8F27C27E - module_death.asm:56 (STA $7EC227)
JSL.l StoreMusicOnDeath JSL.l StoreMusicOnDeath
org $0CC100 ; <- A511 C904 - Bank0C.asm:07 (LDA $11 : CMP.b #$04) org $0CC100 ; <- A511 C904 - Bank0C.asm:07 (LDA $11 : CMP.b #$04)
;JSL.l startup_wait ;JSL.l StartupWait
org $0EE6EC ; <- E220 A922 - Bank0E.asm:2892 (SEP #$20 : LDA.b #$22 : STA $012C) org $0EE6EC ; <- E220 A922 - Bank0E.asm:2892 (SEP #$20 : LDA.b #$22 : STA $012C)
JSL.l ending_wait JSL.l EndingMusicWait
; Process music commands in NMI from new location after muting is processed ; Process music commands in NMI from new location after muting is processed
org $0080DD org $0080DD

View File

@@ -55,6 +55,6 @@ RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
Init_PostRAMClear: Init_PostRAMClear:
JSL msu_init JSL MSUInit
JML $00D463 ; The original target of the jump table that we hijacked JML $00D463 ; The original target of the jump table that we hijacked

132
msu.asm
View File

@@ -145,6 +145,9 @@
!VAL_VOLUME_HALF = #$80 !VAL_VOLUME_HALF = #$80
!VAL_VOLUME_FULL = #$FF !VAL_VOLUME_FULL = #$FF
;================================================================================
; Extended OST/SPC fallback, decide which track to actually play
;--------------------------------------------------------------------------------
CheckMusicLoadRequest: CheckMusicLoadRequest:
PHP : REP #$10 : PHA : PHX : PHY PHP : REP #$10 : PHA : PHX : PHY
LDA !REG_MUSIC_CONTROL_REQUEST : BEQ .skip+3 : BMI .skip+3 LDA !REG_MUSIC_CONTROL_REQUEST : BEQ .skip+3 : BMI .skip+3
@@ -176,7 +179,7 @@ CheckMusicLoadRequest:
BRA +++ BRA +++
+ : LDA !REG_MSU_PACK_CURRENT : STA !REG_MSU_PACK_REQUEST + : LDA !REG_MSU_PACK_CURRENT : STA !REG_MSU_PACK_REQUEST
++ : STA !REG_MSU_PACK_CURRENT ++ : STA !REG_MSU_PACK_CURRENT
JSL msu_init_check_fallback JSL MSUInit_check_fallback
+++ +++
LDA !REG_MUSIC_CONTROL_REQUEST : CMP #$08 : BEQ ++ ; Mirror SFX is not affected by NoBGM or pack $FE LDA !REG_MUSIC_CONTROL_REQUEST : CMP #$08 : BEQ ++ ; Mirror SFX is not affected by NoBGM or pack $FE
@@ -325,7 +328,11 @@ CheckMusicLoadRequest:
PLY : PLX : PLA : PLP PLY : PLX : PLA : PLP
LDA.b #$05 : STA $012D LDA.b #$05 : STA $012D
JML Module_PreDungeon_setAmbientSfx JML Module_PreDungeon_setAmbientSfx
;--------------------------------------------------------------------------------
;================================================================================
; Fade out music if we're changing tracks on a stair transition
;--------------------------------------------------------------------------------
SpiralStairsPreCheck: SpiralStairsPreCheck:
REP #$20 ; thing we wrote over REP #$20 ; thing we wrote over
LDA $A0 LDA $A0
@@ -351,7 +358,11 @@ SpiralStairsPreCheck:
.done .done
LDA $A0 ; thing we wrote over LDA $A0 ; thing we wrote over
RTL RTL
;--------------------------------------------------------------------------------
;================================================================================
; Change music on stair transition (ToH/GT)
;--------------------------------------------------------------------------------
SpiralStairsPostCheck: SpiralStairsPostCheck:
LDA $A0 LDA $A0
CMP.w #$000C : BNE + CMP.w #$000C : BNE +
@@ -372,15 +383,23 @@ SpiralStairsPostCheck:
.done .done
LDX.b #$1C : LDA $A0 ; thing we wrote over LDX.b #$1C : LDA $A0 ; thing we wrote over
RTL RTL
;--------------------------------------------------------------------------------
;================================================================================
; Make sure expanded OST tracks load properly after death/fairy revival
;--------------------------------------------------------------------------------
StoreMusicOnDeath: StoreMusicOnDeath:
STA.l $7EC227 ; thing we wrote over STA.l $7EC227 ; thing we wrote over
LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_AUDIO_PLAYING : BEQ .done LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_AUDIO_PLAYING : BEQ .done
LDA !REG_CURRENT_MSU_TRACK : STA.l $7EC227 LDA !REG_CURRENT_MSU_TRACK : STA.l $7EC227
.done .done
RTL RTL
;--------------------------------------------------------------------------------
msu_init: ;================================================================================
; Check if MSU-1 is enabled and scan for missing tracks
;--------------------------------------------------------------------------------
MSUInit:
PHP PHP
LDA NoBGM : BNE .done LDA NoBGM : BNE .done
@@ -444,29 +463,34 @@ msu_init:
PLA : DEC PLA : DEC
BRA .check_track BRA .check_track
msu_main: ;--------------------------------------------------------------------------------
;================================================================================
; Play MSU-1 audio track
;--------------------------------------------------------------------------------
MSUMain:
SEP #$20 ; set 8-BIT accumulator SEP #$20 ; set 8-BIT accumulator
LDA $4210 ; thing we wrote over LDA $4210 ; thing we wrote over
REP #$20 ; set 16-BIT accumulator REP #$20 ; set 16-BIT accumulator
LDA !REG_MSU_ID_01 : CMP !VAL_MSU_ID_01 : BEQ .continue LDA !REG_MSU_ID_01 : CMP !VAL_MSU_ID_01 : BEQ .continue
.nomsu .nomsu
SEP #$30 SEP #$30
JML spc_continue JML SPCContinue
.continue .continue
LDA !REG_MSU_ID_23 : CMP !VAL_MSU_ID_23 : BNE .nomsu LDA !REG_MSU_ID_23 : CMP !VAL_MSU_ID_23 : BNE .nomsu
LDA !REG_MSU_ID_45 : CMP !VAL_MSU_ID_45 : BNE .nomsu LDA !REG_MSU_ID_45 : CMP !VAL_MSU_ID_45 : BNE .nomsu
SEP #$30 SEP #$30
LDX !REG_MUSIC_CONTROL : BEQ + LDX !REG_MUSIC_CONTROL : BEQ +
BRL command_ff BRL .command_ff
+ +
LDA !REG_MSU_DELAYED_COMMAND : BEQ do_fade LDA !REG_MSU_DELAYED_COMMAND : BEQ .do_fade
msu_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
JML spc_continue JML SPCContinue
.ready .ready
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 spc_continue JML SPCContinue
.start .start
LDA !VAL_VOLUME_FULL LDA !VAL_VOLUME_FULL
STA !REG_TARGET_VOLUME STA !REG_TARGET_VOLUME
@@ -486,13 +510,12 @@ msu_check_busy:
+++ : STA !REG_MSU_CONTROL +++ : STA !REG_MSU_CONTROL
LDA.b #$00 LDA.b #$00
STA !REG_MSU_DELAYED_COMMAND STA !REG_MSU_DELAYED_COMMAND
JML spc_continue JML SPCContinue
do_fade: .do_fade:
LDA !REG_CURRENT_VOLUME : CMP !REG_TARGET_VOLUME : BNE .continue LDA !REG_CURRENT_VOLUME : CMP !REG_TARGET_VOLUME : BNE +
JML spc_continue JML SPCContinue
.continue + : BCC .increment
BCC .increment
.decrement .decrement
SBC !VAL_VOLUME_DECREMENT : BCS .set SBC !VAL_VOLUME_DECREMENT : BCS .set
.mute .mute
@@ -505,41 +528,41 @@ do_fade:
.set .set
STA !REG_CURRENT_VOLUME STA !REG_CURRENT_VOLUME
STA !REG_MSU_VOLUME STA !REG_MSU_VOLUME
JML spc_continue JML SPCContinue
command_ff: .command_ff:
CPX !VAL_COMMAND_LOAD_NEW_BANK : BNE command_f3 CPX !VAL_COMMAND_LOAD_NEW_BANK : BNE .command_f3
JML spc_continue JML SPCContinue
command_f3: .command_f3:
CPX !VAL_COMMAND_FULL_VOLUME : BNE command_f2 CPX !VAL_COMMAND_FULL_VOLUME : BNE .command_f2
STX !REG_SPC_CONTROL STX !REG_SPC_CONTROL
LDA !VAL_VOLUME_FULL LDA !VAL_VOLUME_FULL
STA !REG_TARGET_VOLUME STA !REG_TARGET_VOLUME
JML spc_continue JML SPCContinue
command_f2: .command_f2:
CPX !VAL_COMMAND_FADE_HALF : BNE command_f1 CPX !VAL_COMMAND_FADE_HALF : BNE .command_f1
STX !REG_SPC_CONTROL STX !REG_SPC_CONTROL
LDA !VAL_VOLUME_HALF LDA !VAL_VOLUME_HALF
STA !REG_TARGET_VOLUME STA !REG_TARGET_VOLUME
JML spc_continue JML SPCContinue
command_f1: .command_f1:
CPX !VAL_COMMAND_FADE_OUT : BNE command_f0 CPX !VAL_COMMAND_FADE_OUT : BNE .command_f0
STX !REG_SPC_CONTROL STX !REG_SPC_CONTROL
STZ !REG_TARGET_VOLUME STZ !REG_TARGET_VOLUME
STZ !REG_CURRENT_MSU_TRACK STZ !REG_CURRENT_MSU_TRACK
JML spc_continue JML SPCContinue
command_f0: .command_f0:
CPX !VAL_COMMAND_STOP_PLAYBACK : !BLT load_track CPX !VAL_COMMAND_STOP_PLAYBACK : !BLT .load_track
CPX !VAL_COMMAND_MUTE_SPC : BEQ + ; Don't allow executing the mute/umute CPX !VAL_COMMAND_MUTE_SPC : BEQ + ; Don't allow executing the mute/umute
CPX !VAL_COMMAND_UNMUTE_SPC : BNE ++ ; commands during NMI like this CPX !VAL_COMMAND_UNMUTE_SPC : BNE ++ ; commands during NMI like this
+ : LDA.b #$00 : STA !REG_MUSIC_CONTROL + : LDA.b #$00 : STA !REG_MUSIC_CONTROL
++ : JML spc_continue ++ : JML SPCContinue
load_track: .load_track:
CPX !REG_CURRENT_MSU_TRACK : BNE + CPX !REG_CURRENT_MSU_TRACK : BNE +
- : CPX #27 : BEQ + - : CPX #27 : BEQ +
TXA TXA
@@ -590,9 +613,14 @@ load_track:
LDA MSUExtendedFallbackList-1,X : BRA - LDA MSUExtendedFallbackList-1,X : BRA -
+ +
STA !REG_MUSIC_CONTROL STA !REG_MUSIC_CONTROL
JML spc_continue JML SPCContinue
fanfare_preload: ;--------------------------------------------------------------------------------
;================================================================================
; Wait for the fanfare music to start, or else it can get skipped entirely
;--------------------------------------------------------------------------------
FanfarePreload:
STA !REG_MUSIC_CONTROL_REQUEST ; thing we wrote over STA !REG_MUSIC_CONTROL_REQUEST ; thing we wrote over
PHA PHA
JSL CheckMusicLoadRequest JSL CheckMusicLoadRequest
@@ -600,8 +628,12 @@ fanfare_preload:
PLA PLA
- : CMP !REG_SPC_CONTROL : BNE - - : CMP !REG_SPC_CONTROL : BNE -
JML AddReceivedItem_doneWithSoundEffects JML AddReceivedItem_doneWithSoundEffects
;--------------------------------------------------------------------------------
pendant_fanfare: ;================================================================================
; Wait for pendant fanfare to finish
;--------------------------------------------------------------------------------
PendantFanfareWait:
LDA TournamentSeed : BNE .spc LDA TournamentSeed : BNE .spc
LDA FastFanfare : BNE .done LDA FastFanfare : BNE .done
REP #$20 REP #$20
@@ -614,15 +646,18 @@ pendant_fanfare:
LDA !REG_MSU_DELAYED_COMMAND : BNE .continue LDA !REG_MSU_DELAYED_COMMAND : BNE .continue
LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_AUDIO_PLAYING : BEQ .done LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_AUDIO_PLAYING : BEQ .done
.continue .continue
jml pendant_continue jml PendantFanfareContinue
.spc .spc
SEP #$20 SEP #$20
LDA !REG_SPC_CONTROL : BNE .continue LDA !REG_SPC_CONTROL : BNE .continue
.done .done
jml pendant_done jml PendantFanfareDone
;--------------------------------------------------------------------------------
;================================================================================
crystal_fanfare: ; Wait for crystal fanfare to finish
;--------------------------------------------------------------------------------
CrystalFanfareWait:
LDA TournamentSeed : BNE .spc LDA TournamentSeed : BNE .spc
LDA FastFanfare : BNE .done LDA FastFanfare : BNE .done
REP #$20 REP #$20
@@ -635,24 +670,30 @@ crystal_fanfare:
LDA !REG_MSU_DELAYED_COMMAND : BNE .continue LDA !REG_MSU_DELAYED_COMMAND : BNE .continue
LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_AUDIO_PLAYING : BEQ .done LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_AUDIO_PLAYING : BEQ .done
.continue .continue
jml crystal_continue jml CrystalFanfareContinue
.spc .spc
SEP #$20 SEP #$20
LDA !REG_SPC_CONTROL : BNE .continue LDA !REG_SPC_CONTROL : BNE .continue
.done .done
jml crystal_done jml CrystalFanfareDone
;--------------------------------------------------------------------------------
;================================================================================
startup_wait: ; Delay input scanning on startup/S&Q to avoid hard-lock from button mashing
;--------------------------------------------------------------------------------
StartupWait:
LDA $11 : CMP.b #$04 : BCC .done ; thing we wrote over LDA $11 : CMP.b #$04 : BCC .done ; thing we wrote over
LDA !REG_SPC_CONTROL : BEQ .done-1 LDA !REG_SPC_CONTROL : BEQ .done-1
CMP.b #$01 : BEQ .done CMP.b #$01 : BEQ .done
CLC CLC
.done .done
RTL RTL
;--------------------------------------------------------------------------------
;================================================================================
ending_wait: ; Wait for ending credits music to finish
;--------------------------------------------------------------------------------
EndingMusicWait:
REP #$20 REP #$20
LDA !REG_MSU_ID_01 : CMP !VAL_MSU_ID_01 : BNE .done LDA !REG_MSU_ID_01 : CMP !VAL_MSU_ID_01 : BNE .done
LDA !REG_MSU_ID_23 : CMP !VAL_MSU_ID_23 : BNE .done LDA !REG_MSU_ID_23 : CMP !VAL_MSU_ID_23 : BNE .done
@@ -664,3 +705,4 @@ ending_wait:
SEP #$20 SEP #$20
LDA.b #$22 LDA.b #$22
RTL RTL
;--------------------------------------------------------------------------------