From b0b65f2131acdd5f45fadd3fb7aac73be0af852e Mon Sep 17 00:00:00 2001 From: qwertymodo Date: Mon, 21 Jun 2021 13:42:16 -0700 Subject: [PATCH] More robust bank fix Shouldn't crash on crystal/pendant anymore --- framehook.asm | 11 ++++++----- msu.asm | 15 ++++++++++----- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/framehook.asm b/framehook.asm index 1f28d0a..92cc458 100644 --- a/framehook.asm +++ b/framehook.asm @@ -22,9 +22,10 @@ !LOCK_STATS = "$7EF443" FrameHookAction: JSL $0080B5 ; Module_MainRouting - PHP : PHB : PHD : REP #$30 : PHA : PHX : PHY - LDA #$0000 : TCD : SEP #$20 : PHA : PLB - JSL CheckMusicLoadRequest + JSL CheckMusicLoadRequest + PHP : REP #$30 : PHA + + SEP #$20 ;LDA EnableSRAMTrace : AND.l TournamentSeedInverse : BEQ + ; LDA $1A : BNE ++ : JSL.l WriteStatusPreview : ++ ; write every 256 frames @@ -39,9 +40,9 @@ FrameHookAction: LDA !ITEM_FRAMES_LOW : INC : STA !ITEM_FRAMES_LOW : BNE + LDA !ITEM_FRAMES_HIGH : INC : STA !ITEM_FRAMES_HIGH + - SEP #$20 ; set 8-bit accumulator ?? check this + ;SEP #$20 ; set 8-bit accumulator ?? check this ++ - REP #$30 : PLY : PLX : PLA : PLD : PLB : PLP + REP #$30 : PLA : PLP RTL ;-------------------------------------------------------------------------------- NMIHookAction: diff --git a/msu.asm b/msu.asm index 21481e3..3daa716 100644 --- a/msu.asm +++ b/msu.asm @@ -149,6 +149,8 @@ ; Extended OST/SPC fallback, decide which track to actually play ;-------------------------------------------------------------------------------- CheckMusicLoadRequest: + PHP : PHB : PHD : REP #$30 : PHA : PHX : PHY + LDA #$0000 : TCD : SEP #$20 : PHA : PLB LDA !REG_MUSIC_CONTROL_REQUEST : BEQ .skip+3 : BMI .skip+3 CMP !REG_CURRENT_COMMAND : BNE .continue CMP.b #22 : BNE .skip ; Check GT when mirroring from upstairs @@ -158,6 +160,7 @@ CheckMusicLoadRequest: .skip LDA !REG_MUSIC_CONTROL_REQUEST STA !REG_MUSIC_CONTROL : STZ !REG_MUSIC_CONTROL_REQUEST + REP #$30 : PLY : PLX : PLA : PLD : PLB : PLP RTL .continue @@ -318,11 +321,13 @@ CheckMusicLoadRequest: .done LDA !REG_MUSIC_CONTROL_REQUEST : STA !REG_MUSIC_CONTROL : STZ !REG_MUSIC_CONTROL_REQUEST + REP #$30 : PLY : PLX : PLA : PLD : PLB : PLP RTL .sfx_indoors LDA !REG_MUSIC_CONTROL_REQUEST : STA !REG_MUSIC_CONTROL : STZ !REG_MUSIC_CONTROL_REQUEST - SEP #$20 : LDA.b #$05 : STA $012D ; Vanilla subroutine expects 8-bit A, doesn't use X/Y + SEP #$20 : LDA.b #$05 : STA $012D + REP #$30 : PLY : PLX : PLA : PLD : PLB : PLP JML Module_PreDungeon_setAmbientSfx ;-------------------------------------------------------------------------------- @@ -621,12 +626,12 @@ MSUMain: ; 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.l !REG_MUSIC_CONTROL_REQUEST ; thing we wrote over PHA JSL CheckMusicLoadRequest WAI PLA - - : CMP !REG_SPC_CONTROL : BNE - + - : CMP.l !REG_SPC_CONTROL : BNE - JML AddReceivedItem_doneWithSoundEffects ;-------------------------------------------------------------------------------- @@ -649,7 +654,7 @@ PendantFanfareWait: jml PendantFanfareContinue .spc SEP #$20 - LDA !REG_SPC_CONTROL : BNE .continue + LDA.l !REG_SPC_CONTROL : BNE .continue .done jml PendantFanfareDone ;-------------------------------------------------------------------------------- @@ -673,7 +678,7 @@ CrystalFanfareWait: jml CrystalFanfareContinue .spc SEP #$20 - LDA !REG_SPC_CONTROL : BNE .continue + LDA.l !REG_SPC_CONTROL : BNE .continue .done jml CrystalFanfareDone ;--------------------------------------------------------------------------------