diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index 817f560..749e9db 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -80,6 +80,8 @@ db #$20, #$19, #$08, #$31 ; year/month/day !REG_MSU_DELAYED_COMMAND = $7F50A9 !REG_MSU_PACK_COUNT = $7F50AA !REG_MSU_PACK_CURRENT = $7F50AB +!REG_MSU_PACK_REQUEST = $7F50AC +!REG_SPC_LOADING = $7F50AD !REG_MUSIC_CONTROL = $012B ;!REG_MUSIC_CONTROL = $012C !REG_MUSIC_CONTROL_REQUEST = $012C diff --git a/msu.asm b/msu.asm index 1b9689c..7242ad5 100644 --- a/msu.asm +++ b/msu.asm @@ -151,8 +151,16 @@ CheckMusicLoadRequest: RTL .continue + LDA TournamentSeed : BNE ++ + LDA !REG_MSU_PACK_REQUEST + CMP !REG_MSU_PACK_CURRENT : BEQ ++ + CMP !REG_MSU_PACK_COUNT : !BLT + + LDA !REG_MSU_PACK_CURRENT : STA !REG_MSU_PACK_REQUEST + + : STA !REG_MSU_PACK_CURRENT + JSL msu_init_check_fallback + ; Shut down NMI until music loads - STZ $4200 + ++ : STZ $4200 LDA NoBGM : BEQ + BRL .mute @@ -182,6 +190,7 @@ CheckMusicLoadRequest: .lightworld PHA LDA $7EF300 : AND.b #$40 : BEQ + + PLA LDA.b #60 : BRA .check_fallback-3 + - : PLA : BRA .check_fallback-3 @@ -260,6 +269,8 @@ CheckMusicLoadRequest: .load REP #$10 JSL Sound_LoadLightWorldSongBank_do_load + + LDA.b #$01 : STA !REG_SPC_LOADING ; Re-enable NMI and joypad LDA.b #$81 : STA $4200 @@ -323,9 +334,12 @@ msu_init: LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_AUDIO_BUSY : BNE .wait_pack LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_TRACK_MISSING : BEQ .check_pack TXA : STA !REG_MSU_PACK_COUNT + BRA + ; Check the current MSU-1 pack for tracks that require SPC fallback - LDA.b #64 +.check_fallback + PHP : SEP #$10 + + : LDA.b #64 LDX.b #7 LDY.b #7 @@ -470,6 +484,9 @@ load_track: PLY : STY $00 : SEP #$10 : PLB .done + - : TAX : CMP MSUExtendedFallbackList-1,X : BEQ + + LDA MSUExtendedFallbackList-1,X : BRA - + + STA !REG_MUSIC_CONTROL JML spc_continue @@ -502,6 +519,7 @@ load_track: pendant_fanfare: LDA TournamentSeed : BNE .spc + LDA FastFanfare : BNE .done REP #$20 LDA !REG_MSU_ID_01 : CMP !VAL_MSU_ID_01 : BNE .spc LDA !REG_MSU_ID_23 : CMP !VAL_MSU_ID_23 : BNE .spc @@ -510,18 +528,21 @@ pendant_fanfare: LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_TRACK_MISSING : BNE .spc LDA !REG_MSU_DELAYED_COMMAND : BNE .continue LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_AUDIO_PLAYING : BEQ .done +.playing + LDA #$00 : STA !REG_SPC_LOADING .continue jml pendant_continue .spc SEP #$20 - - : LDA !REG_SPC_CONTROL : BEQ - ; Wait for the track to finish loading - LDA !REG_SPC_CONTROL : BNE .continue + LDA !REG_SPC_CONTROL : BNE .playing + LDA !REG_SPC_LOADING : BNE .continue .done jml pendant_done crystal_fanfare: LDA TournamentSeed : BNE .spc + LDA FastFanfare : BNE .done REP #$20 LDA !REG_MSU_ID_01 : CMP !VAL_MSU_ID_01 : BNE .spc LDA !REG_MSU_ID_23 : CMP !VAL_MSU_ID_23 : BNE .spc @@ -530,12 +551,14 @@ crystal_fanfare: LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_TRACK_MISSING : BNE .spc LDA !REG_MSU_DELAYED_COMMAND : BNE .continue LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_AUDIO_PLAYING : BEQ .done +.playing + LDA #$00 : STA !REG_SPC_LOADING .continue jml crystal_continue .spc SEP #$20 - - : LDA !REG_SPC_CONTROL : BEQ - ; Wait for the track to finish loading - LDA !REG_SPC_CONTROL : BNE .continue + LDA !REG_SPC_CONTROL : BNE .playing + LDA !REG_SPC_LOADING : BNE .continue .done jml crystal_done diff --git a/music.asm b/music.asm index 48782d6..5a53a6c 100644 --- a/music.asm +++ b/music.asm @@ -127,11 +127,18 @@ Overworld_FinishMirrorWarp: LDX.b #$02 ; hyrule field theme + ; Check if we're entering the lost woods + CMP.b #$00 : BNE + + LDA $7EF300 : AND.b #$40 : BNE .endOfLightWorldChecks + LDX.b #$05 ; lost woods theme + BRA .endOfLightWorldChecks + + + ; Check if we're entering the village CMP.b #$18 : BNE .endOfLightWorldChecks ; Check what phase we're in - LDA $7EF3C5 : CMP.b #$03 : !BGE .endOfLightWorldChecks + ; LDA $7EF3C5 : CMP.b #$03 : !BGE .endOfLightWorldChecks LDX.b #$07 ; Default village theme (phase <3) .endOfLightWorldChecks diff --git a/tables.asm b/tables.asm index e308114..059c396 100644 --- a/tables.asm +++ b/tables.asm @@ -975,8 +975,11 @@ db $00, $01, $02, $03, $04 org $30821A ; PC 0x18021A NoBGM: db $00 ; $00 = BGM enabled (default) $01 = BGM disabled +org $30821B ; PC 0x18021B +FastFanfare: +db $00 ; $00 = Normal fanfare (default) $01 = Fast fanfare ;-------------------------------------------------------------------------------- -; 0x18021B - 0x18021F (unused) +; 0x18021C - 0x18021F (unused) ;================================================================================ ; $308220 (0x180220) - $30823F (0x18023F) ; Plandomizer Author Name (ASCII) - Leave unused chars as 0 @@ -1619,7 +1622,7 @@ db $03,$03,$03,$03,$03,$00,$00,$00 MSUExtendedFallbackList: db $01,$02,$03,$04,$05,$06,$07,$08 -db $09,$0A,$0B,$0C,$0D,$0E,$0F,$0D +db $09,$0A,$0B,$0C,$0D,$0E,$0D,$10 db $11,$12,$13,$14,$15,$16,$17,$18 db $19,$1A,$1B,$1C,$1D,$1E,$1F,$20 db $21,$22,$11,$11,$10,$16,$16,$16