From feb27d71b966575fd08560acdfe58d15f909fc12 Mon Sep 17 00:00:00 2001 From: spannerisms <32842036+spannerisms@users.noreply.github.com> Date: Sat, 12 Jun 2021 06:07:38 -0400 Subject: [PATCH 01/18] heartbeeps --- hooks.asm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hooks.asm b/hooks.asm index e0884e2..5ceabe3 100755 --- a/hooks.asm +++ b/hooks.asm @@ -2609,4 +2609,11 @@ Sprite_AttemptDamageToPlayerPlusRecoilLong: org $1ED1B6 JSL NewFireBarDamage + +;================================================================================ +; Remove heart beeps from 1/2 max HP +org $0DDB60 +db $00, $00 + + ;================================================================================ From 8f74212259a05343329907c4cb8b1d7d654dacca Mon Sep 17 00:00:00 2001 From: spannerisms <32842036+spannerisms@users.noreply.github.com> Date: Sat, 12 Jun 2021 06:11:04 -0400 Subject: [PATCH 02/18] goals easy-to-add AD no aga goal --- goalitem.asm | 8 ++++++-- hooks.asm | 21 +++++++++++---------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/goalitem.asm b/goalitem.asm index 81351ab..8cd7502 100644 --- a/goalitem.asm +++ b/goalitem.asm @@ -46,6 +46,7 @@ CheckGanonVulnerability: dw .light_speed dw .crystals_and_bosses dw .bosses_only + dw .all_dungeons_no_agahnim ; 00 = always vulnerable .vulnerable @@ -61,10 +62,13 @@ CheckGanonVulnerability: ; 02 = All dungeons .all_dungeons + LDA.l $7EF3C5 : CMP.b #$03 : BCC .fail ; require post-aga world state + +; 09 = All dungeons except agahnim +.all_dungeons_no_agahnim LDA.l $7EF374 : AND.b #$07 : CMP.b #$07 : BNE .fail ; require all pendants LDA.l $7EF37A : AND.b #$7F : CMP.b #$7F : BNE .fail ; require all crystals - LDA.l $7EF3C5 : CMP.b #$03 : BCC .fail ; require post-aga world state - LDA.l $7EF2DB : AND.b #$20 : CMP.b #$20 : BNE .fail ; require aga2 defeated (pyramid hole open) + LDA.l $7EF2DB : AND.b #$20 : BEQ .fail ; require aga2 defeated (pyramid hole open) BRA .success ; 03 = crystals and aga 2 diff --git a/hooks.asm b/hooks.asm index 5ceabe3..f5d1039 100755 --- a/hooks.asm +++ b/hooks.asm @@ -2578,21 +2578,22 @@ dw 37, 11 : db $FB, $40, $00, $00 ;-------------------------------------------------------------------------------- org $07839E ; bunny BAGE check BunnyRead: - JSR.w $07B5A9 ; check A button - BCC .noA - JSR.w CheckIfReading - BNE .noread - JSR.w $07B4DB - NOP + JSR.w $07B5A9 ; check A button + BCC .noA + JSR.w CheckIfReading + BNE .noread + JSR.w $07B4DB + NOP .noread .noA org $07FFF4 CheckIfReading: - JSR.w $07D36C ; check action - LDA #$80 : TRB $3B - CPX #$04 - RTS + JSR.w $07D36C ; check action + LDA #$80 : TRB $3B + CPX #$04 + RTS + ;================================================================================ org $0DB4CA : db $40, $40 ; fire bar statis From 3204ad2ed52759be4c50ec11212e8151bbc2f440 Mon Sep 17 00:00:00 2001 From: spannerisms <32842036+spannerisms@users.noreply.github.com> Date: Sat, 12 Jun 2021 07:43:18 -0400 Subject: [PATCH 03/18] fast credits --- LTTP_RND_GeneralBugfixes.asm | 1 + fastcredits.asm | 177 +++++++++++++++++++++++++++++++++++ hooks.asm | 21 +++++ 3 files changed, 199 insertions(+) create mode 100644 fastcredits.asm diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index b47f391..6c3cb05 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -197,6 +197,7 @@ incsrc servicerequest.asm incsrc elder.asm incsrc toast.asm incsrc darkroomitems.asm +incsrc fastcredits.asm warnpc $A58000 ;org $228000 ; contrib area diff --git a/fastcredits.asm b/fastcredits.asm new file mode 100644 index 0000000..fa1bee3 --- /dev/null +++ b/fastcredits.asm @@ -0,0 +1,177 @@ +;=================================================================================================== + +FastCreditsCutsceneTimer: + BIT.b $F2-1 : BVC .slow + + LDA.b $C8 + CLC + ADC.w #$0004 + AND.w #$FFFE + STA.b $C8 + SEP #$20 + RTL + + +.slow + INC.b $C8 + + SEP #$20 + RTL + +FastCreditsScrollOW: + JSR FastCreditsCutsceneScrollY + TAY + STY.b $30 + + JSR FastCreditsCutsceneScrollX + TAY + STY.b $31 + + RTL + +FastCreditsCutsceneScrollX: + PHX + TXA + CLC + ADC.w #$0020 + TAX + + LDY.b #$00 + JSR FastCreditsCutsceneScroll + + PLX + RTS + +FastCreditsCutsceneScrollY: + LDY.b #$06 + +FastCreditsCutsceneScroll: + LDA.w $00E2,Y + CMP.l $0EC308,X ; compare to target + + ROL.b $00 ; put carry in here + LDA.l $0EC348,X ; get movement + BPL ++ ; if positive, leave saved carry alone + INC.b $00 ; otherwise, flip it +++ ROR.b $00 ; recover carry + + BCC ++ ; scroll if carry not set + LDA.w #$0000 + +++ BIT.b $F2-1 : BVC .slow ; check for X held + + AND.w #$FFFF ; get sign of A + BPL .positive + + EOR.w #$FFFF + INC + ASL + ASL + EOR.w #$FFFF + INC + RTS + +.positive + ASL + ASL + + + +.slow + RTS + + + + + + +FastCreditsCutsceneUnderworldX: + LDA.l $0EC368,X + JSR QuadrupleCreditsSpeedUW + CLC + ADC.b $E2 + STA.b $E2 + + RTL + + +FastCreditsCutsceneUnderworldY: + LDA.l $0EC348,X + JSR QuadrupleCreditsSpeedUW + CLC + ADC.b $E8 + STA.b $E8 + + RTL + +QuadrupleCreditsSpeedUW: + BIT.b $F2-1 : BVC .slow + + AND.w #$FFFF + BPL .positive + + EOR.w #$FFFF + INC + + ASL + ASL + + EOR.w #$FFFF + INC + + RTS + + +.positive + ASL + ASL + +.slow + RTS + + + + +FastCreditsCutsceneOverworld: + BIT.b $F2 : BVC .slow + + LDA.b $30 + JSR .quad + STA.b $30 + + LDA.b $31 + JSR .quad + STA.b $31 + +.slow + JML $0285B5 + +.quad + BPL .fine + + EOR.b #$FF + INC + ASL + ASL + EOR.b #$FF + INC + RTS + + +.fine + ASL + ASL + + RTS + + +FastTextScroll: + LDA.b $1A + BIT.b $F2-1 : BVC .slow + + AND.w #$0000 + RTL + +.slow + AND.w #$0003 + RTL diff --git a/hooks.asm b/hooks.asm index f5d1039..693dc08 100755 --- a/hooks.asm +++ b/hooks.asm @@ -2618,3 +2618,24 @@ db $00, $00 ;================================================================================ +; Fast credits +org $0EC45A +;JSL FastCreditsCutsceneScrollOverworld + + +org $0EC3AF +JSL FastCreditsScrollOW +JMP.w $0EC3C7 + +org $0EC41F +JSL FastCreditsCutsceneUnderworldY + +org $0EC42C +JSL FastCreditsCutsceneUnderworldX + + +org $0EC488 +JSL FastCreditsCutsceneTimer + +org $0EE773 +JSL FastTextScroll : NOP From 6261b9b8e0f7de41ca5250dd57e54c871f8accfe Mon Sep 17 00:00:00 2001 From: spannerisms <32842036+spannerisms@users.noreply.github.com> Date: Sat, 12 Jun 2021 07:46:20 -0400 Subject: [PATCH 04/18] improvement for UW --- fastcredits.asm | 34 ++-------------------------------- 1 file changed, 2 insertions(+), 32 deletions(-) diff --git a/fastcredits.asm b/fastcredits.asm index fa1bee3..c3a078a 100644 --- a/fastcredits.asm +++ b/fastcredits.asm @@ -86,8 +86,7 @@ FastCreditsCutsceneScroll: FastCreditsCutsceneUnderworldX: - LDA.l $0EC368,X - JSR QuadrupleCreditsSpeedUW + JSR FastCreditsCutsceneScrollX CLC ADC.b $E2 STA.b $E2 @@ -96,42 +95,13 @@ FastCreditsCutsceneUnderworldX: FastCreditsCutsceneUnderworldY: - LDA.l $0EC348,X - JSR QuadrupleCreditsSpeedUW + JSR FastCreditsCutsceneScrollY CLC ADC.b $E8 STA.b $E8 RTL -QuadrupleCreditsSpeedUW: - BIT.b $F2-1 : BVC .slow - - AND.w #$FFFF - BPL .positive - - EOR.w #$FFFF - INC - - ASL - ASL - - EOR.w #$FFFF - INC - - RTS - - -.positive - ASL - ASL - -.slow - RTS - - - - FastCreditsCutsceneOverworld: BIT.b $F2 : BVC .slow From 775a970bccac49f150eaec92e9b04b9bf4ea6aea Mon Sep 17 00:00:00 2001 From: spannerisms <32842036+spannerisms@users.noreply.github.com> Date: Sat, 12 Jun 2021 07:47:27 -0400 Subject: [PATCH 05/18] yes --- fastcredits.asm | 32 -------------------------------- hooks.asm | 3 --- 2 files changed, 35 deletions(-) diff --git a/fastcredits.asm b/fastcredits.asm index c3a078a..3c0edd2 100644 --- a/fastcredits.asm +++ b/fastcredits.asm @@ -102,38 +102,6 @@ FastCreditsCutsceneUnderworldY: RTL -FastCreditsCutsceneOverworld: - BIT.b $F2 : BVC .slow - - LDA.b $30 - JSR .quad - STA.b $30 - - LDA.b $31 - JSR .quad - STA.b $31 - -.slow - JML $0285B5 - -.quad - BPL .fine - - EOR.b #$FF - INC - ASL - ASL - EOR.b #$FF - INC - RTS - - -.fine - ASL - ASL - - RTS - FastTextScroll: LDA.b $1A diff --git a/hooks.asm b/hooks.asm index 693dc08..276ee78 100755 --- a/hooks.asm +++ b/hooks.asm @@ -2619,9 +2619,6 @@ db $00, $00 ;================================================================================ ; Fast credits -org $0EC45A -;JSL FastCreditsCutsceneScrollOverworld - org $0EC3AF JSL FastCreditsScrollOW From a378bcf5c5c71eac507cf629b35ec0c3b08c05e0 Mon Sep 17 00:00:00 2001 From: spannerisms <32842036+spannerisms@users.noreply.github.com> Date: Sat, 12 Jun 2021 13:43:48 -0400 Subject: [PATCH 06/18] flag --- fastcredits.asm | 9 +++++++++ hooks.asm | 3 +++ msu.asm | 1 + 3 files changed, 13 insertions(+) diff --git a/fastcredits.asm b/fastcredits.asm index 3c0edd2..97f23a6 100644 --- a/fastcredits.asm +++ b/fastcredits.asm @@ -3,6 +3,8 @@ FastCreditsCutsceneTimer: BIT.b $F2-1 : BVC .slow + LDA.w #$0001 : STA.b $50 + LDA.b $C8 CLC ADC.w #$0004 @@ -113,3 +115,10 @@ FastTextScroll: .slow AND.w #$0003 RTL + +DumbFlagForMSU: + STA.l $7EF3CA + STZ.b $50 + RTL + + diff --git a/hooks.asm b/hooks.asm index 276ee78..9014a7b 100755 --- a/hooks.asm +++ b/hooks.asm @@ -2620,6 +2620,9 @@ db $00, $00 ;================================================================================ ; Fast credits +org $02A096 +JSL DumbFlagForMSU + org $0EC3AF JSL FastCreditsScrollOW JMP.w $0EC3C7 diff --git a/msu.asm b/msu.asm index 3118f01..cd21a0a 100644 --- a/msu.asm +++ b/msu.asm @@ -702,6 +702,7 @@ EndingMusicWait: LDA !REG_MSU_ID_45 : CMP !VAL_MSU_ID_45 : BNE .done SEP #$20 .wait + LDA.b $50 : BNE .done LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_AUDIO_PLAYING : BNE .wait .done SEP #$20 From 34bb99b7d0235bef8b4605ecf6e3c734be81c954 Mon Sep 17 00:00:00 2001 From: Bonta <40473493+Bonta0@users.noreply.github.com> Date: Sat, 12 Jun 2021 15:22:27 +0200 Subject: [PATCH 07/18] MSU1: Resume overworld tracks --- LTTP_RND_GeneralBugfixes.asm | 7 ++- msu.asm | 89 ++++++++++++++++++++++++++++++++++-- tables.asm | 8 +++- 3 files changed, 98 insertions(+), 6 deletions(-) diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index 6c3cb05..f2a6e53 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -81,7 +81,12 @@ db #$20, #$19, #$08, #$31 ; year/month/day !REG_MSU_PACK_COUNT = $7F50AA !REG_MSU_PACK_CURRENT = $7F50AB !REG_MSU_PACK_REQUEST = $7F50AC -!REG_SPC_LOADING = $7F50AD +!REG_MSU_LOADED_TRACK = $7F50AD ; 2 bytes +!REG_SPC_LOADING = $7F50AF +!MSU_LOADED_TRACK = $7F5400 +!MSU_RESUME_TRACK = $7F5401 +!MSU_RESUME_TIME = $7F5402 ; 4 bytes +!MSU_RESUME_CANCEL = $7F5406 !REG_MUSIC_CONTROL = $012B ;!REG_MUSIC_CONTROL = $012C !REG_MUSIC_CONTROL_REQUEST = $012C diff --git a/msu.asm b/msu.asm index cd21a0a..a0853b9 100644 --- a/msu.asm +++ b/msu.asm @@ -116,6 +116,7 @@ !FLAG_MSU_PLAY = #$01 !FLAG_MSU_REPEAT = #$02 +!FLAG_MSU_RESUME = #$04 !FLAG_MSU_STATUS_TRACK_MISSING = #$08 !FLAG_MSU_STATUS_AUDIO_PLAYING = #$10 !FLAG_MSU_STATUS_AUDIO_REPEATING = #$20 @@ -145,6 +146,25 @@ !VAL_VOLUME_HALF = #$80 !VAL_VOLUME_FULL = #$FF +;================================================================================ +; Check if A has an overworld track +;-------------------------------------------------------------------------------- +IsOverworldTrack: + CMP #02 : BEQ .yes ; 2 - Hyrule Field + CMP #03 : BEQ .yes ; 3 - Time of Falling Rain + CMP #04 : BEQ .yes ; 4 - The Silly Pink Rabbit + CMP #05 : BEQ .yes ; 5 - Forest of Mystery + CMP #07 : BEQ .yes ; 7 - Kakariko Village + CMP #09 : BEQ .yes ; 9 - Dark Golden Land + CMP #15 : BEQ .yes ; 15 - Dark Woods + CMP #60 : BEQ .yes ; 60 - Light World OW (after ped pull) + CMP #61 : BEQ .yes ; 61 - Dark World OW (with all crystals) + .no + CLC : RTS +.yes +SEC : RTS +;-------------------------------------------------------------------------------- + ;================================================================================ ; Extended OST/SPC fallback, decide which track to actually play ;-------------------------------------------------------------------------------- @@ -402,6 +422,12 @@ StoreMusicOnDeath: MSUInit: PHP + LDA #$00 + STA !MSU_LOADED_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_CANCEL + LDA NoBGM : BNE .done REP #$20 @@ -465,6 +491,41 @@ MSUInit: ;-------------------------------------------------------------------------------- +;================================================================================ +; Stop MSU-1 audio track and save the current position when approriate +;-------------------------------------------------------------------------------- +MSUStopPlaying: +PHA : XBA : PHA + LDA !MSU_LOADED_TRACK + JSR IsOverworldTrack : BCC + ; dont save if this isnt an overworld track + ; 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 + BRA ++ + +++ + PLA + ++ + ; saving + LDA !NMI_COUNTER : STA !MSU_RESUME_TIME + LDA !NMI_COUNTER+2 : STA !MSU_RESUME_TIME+2 + SEP #$20 + + LDA !MSU_LOADED_TRACK : STA !MSU_RESUME_TRACK + LDA #$00 : STA !MSU_LOADED_TRACK ; dont take this path if we're calling again + LDA !FLAG_MSU_RESUME : STA !REG_MSU_CONTROL ; save this track's position + PLA : XBA : PLA + RTS + .too_early + SEP #$20 + + + LDA #$00 : STA !REG_MSU_CONTROL +PLA : XBA : PLA +RTS +;-------------------------------------------------------------------------------- + ;================================================================================ ; Play MSU-1 audio track ;-------------------------------------------------------------------------------- @@ -492,6 +553,11 @@ MSUMain: LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_TRACK_MISSING : BEQ .start JML SPCContinue .start + LDA !MSU_RESUME_CANCEL : BEQ + + REP #$20 : LDA !REG_MSU_LOADED_TRACK : STA !REG_MSU_TRACK : SEP #$20 + LDA #$00 : STA !MSU_RESUME_CANCEL + JML SPCContinue + + LDA !VAL_VOLUME_FULL STA !REG_TARGET_VOLUME STA !REG_CURRENT_VOLUME @@ -522,7 +588,7 @@ MSUMain: LDA !REG_TARGET_VOLUME : BRA .set .mute STZ !REG_CURRENT_VOLUME - STZ !REG_MSU_CONTROL + JSR MSUStopPlaying BRA .set .increment ADC !VAL_VOLUME_INCREMENT : BCS .max @@ -568,7 +634,7 @@ MSUMain: CPX !REG_CURRENT_MSU_TRACK : BNE + - : CPX #27 : BEQ + TXA - BRA .done+1 + JMP .done+1 + CPX !REG_CURRENT_COMMAND : BEQ - LDA.b #$00 : XBA @@ -577,6 +643,8 @@ MSUMain: !SUB !REG_MSU_PACK_COUNT : BRA - + + JSR MSUStopPlaying + PHX : PHA : TXA : PLX REP #$20 BEQ + @@ -585,10 +653,25 @@ MSUMain: DEX : BNE - + STA !REG_MSU_TRACK + STA !REG_MSU_LOADED_TRACK SEP #$20 - STZ !REG_MSU_CONTROL PLX + TXA : CMP !MSU_RESUME_TRACK : BNE + ; dont resume if too late + REP #$20 + LDA !NMI_COUNTER : !SUB !MSU_RESUME_TIME : PHA + LDA !NMI_COUNTER+2 : SBC !MSU_RESUME_TIME+2 : BNE ++ + PLA : CMP MSUResumeDelay : !BGE +++ + SEP #$20 : BRA .done_resume + ++ + PLA + +++ + SEP #$20 + LDA #$01 : STA !MSU_RESUME_CANCEL + .done_resume: + LDA #$00 : STA !MSU_RESUME_TRACK + + + TXA : STA !MSU_LOADED_TRACK STX !REG_CURRENT_MSU_TRACK LDA !REG_MSU_PACK_CURRENT : CMP #$FE : !BLT + LDA #$00 : BRA ++ diff --git a/tables.asm b/tables.asm index 386cc6c..26f3c75 100644 --- a/tables.asm +++ b/tables.asm @@ -992,8 +992,11 @@ db $00 ; $00 = BGM enabled (default) $01 = BGM disabled org $30821B ; PC 0x18021B FastFanfare: db $00 ; $00 = Normal fanfare (default) $01 = Fast fanfare +org $30821C ; PC 0x18021C +MSUResumeDelay: +dw $0708 ; Number of frames on a different track until we no longer resume (0x708 = 1800 = ~30s) ;-------------------------------------------------------------------------------- -; 0x18021C - 0x18021F (unused) +; 0x18021E - 0x18021F (unused) ;================================================================================ ; $308220 (0x180220) - $30823F (0x18023F) ; Plandomizer Author Name (ASCII) - Leave unused chars as 0 @@ -1522,8 +1525,9 @@ dw #9999 ; Rupee Limit ; $7F5100 - $7F51FF - Block Cypher Buffer ; $7F5200 - $7F52FF - RNG Pointer Block ; $7F5300 - $7F53FF - Multiworld Block +; $7F5400 - $7F540F - MSU Block -; $7F5400 - $7F56FF - Unused +; $7F5410 - $7F56FF - Unused ; $7F5700 - $7F57FF - Dialog Buffer ; 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 08/18] 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 From 3f86caf08356b3a196285d0a9081cebafbefaf2f Mon Sep 17 00:00:00 2001 From: Bonta <40473493+Bonta0@users.noreply.github.com> Date: Sat, 12 Jun 2021 21:16:30 +0200 Subject: [PATCH 09/18] MSU1: Move msu.asm to bank A4 --- LTTP_RND_GeneralBugfixes.asm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index f2a6e53..695604c 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -135,7 +135,6 @@ incsrc swordswap.asm incsrc stats.asm incsrc scratchpad.asm incsrc map.asm -incsrc msu.asm incsrc dialog.asm incsrc entrances.asm incsrc clock.asm @@ -203,6 +202,7 @@ incsrc elder.asm incsrc toast.asm incsrc darkroomitems.asm incsrc fastcredits.asm +incsrc msu.asm warnpc $A58000 ;org $228000 ; contrib area From a9a929c6f4fb99e99d2cd635dfb71e5d7c5c5926 Mon Sep 17 00:00:00 2001 From: Bonta <40473493+Bonta0@users.noreply.github.com> Date: Sat, 12 Jun 2021 22:35:07 +0200 Subject: [PATCH 10/18] MSU1: Dont resume track from Link's house --- msu.asm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/msu.asm b/msu.asm index f7fc19c..51e05cb 100644 --- a/msu.asm +++ b/msu.asm @@ -686,7 +686,15 @@ MSUMain: .done_resume: LDA #$00 : STA !MSU_RESUME_TRACK + - TXA : STA !MSU_LOADED_TRACK + CPX #07 : BNE + ; Kakariko Village + LDA $10 : CMP #$07 : BNE + + ; we're in link's house -> ignore + LDA #$00 + BRA ++ + + + TXA + ++ + STA !MSU_LOADED_TRACK STX !REG_CURRENT_MSU_TRACK LDA !REG_MSU_PACK_CURRENT : CMP #$FE : !BLT + LDA #$00 : BRA ++ From 3d7e12a7603c6f75c89b5c96c60b6ae81c35e5a5 Mon Sep 17 00:00:00 2001 From: Thomas Prescott Date: Sat, 12 Jun 2021 16:15:28 -0500 Subject: [PATCH 11/18] Update creditsnew.asm Add Bonta and Emosaru to the Special Thanks section --- stats/creditsnew.asm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/stats/creditsnew.asm b/stats/creditsnew.asm index 228dae3..0b14869 100644 --- a/stats/creditsnew.asm +++ b/stats/creditsnew.asm @@ -507,6 +507,10 @@ CreditsLineBlank: %blankline() +%bigcredits("BONTA EMOSARU") + +%blankline() + %bigcredits("SAKURATSUBASA") %blankline() @@ -556,9 +560,6 @@ CreditsLineBlank: %emptyline() %emptyline() %emptyline() -%emptyline() -%emptyline() -%emptyline() ;=================================================================================================== From 183d439ff7710c8f629102d13a8390814e2727cf Mon Sep 17 00:00:00 2001 From: Bonta <40473493+Bonta0@users.noreply.github.com> Date: Sat, 12 Jun 2021 23:47:46 +0200 Subject: [PATCH 12/18] MSU1: Fade in on resume --- LTTP_RND_GeneralBugfixes.asm | 2 +- msu.asm | 25 +++++++++++++++++++------ 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index 695604c..ff6eac4 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -86,7 +86,7 @@ db #$20, #$19, #$08, #$31 ; year/month/day !MSU_LOADED_TRACK = $7F5400 !MSU_RESUME_TRACK = $7F5401 !MSU_RESUME_TIME = $7F5402 ; 4 bytes -!MSU_RESUME_CANCEL = $7F5406 +!MSU_RESUME_CONTROL = $7F5406 !REG_MUSIC_CONTROL = $012B ;!REG_MUSIC_CONTROL = $012C !REG_MUSIC_CONTROL_REQUEST = $012C diff --git a/msu.asm b/msu.asm index 51e05cb..f004751 100644 --- a/msu.asm +++ b/msu.asm @@ -123,6 +123,8 @@ !FLAG_MSU_STATUS_AUDIO_BUSY = #$40 !FLAG_MSU_STATUS_DATA_BUSY = #$80 +!FLAG_RESUME_CANCEL = #$01 +!FLAG_RESUME_FADEIN = #$02 !REG_CURRENT_MSU_TRACK = $010B !REG_CURRENT_VOLUME = $0127 @@ -441,7 +443,7 @@ MSUInit: STA !MSU_LOADED_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_CANCEL + STA !MSU_RESUME_CONTROL LDA NoBGM : BNE .done @@ -559,7 +561,7 @@ MSUMain: LDX !REG_MUSIC_CONTROL : BEQ + JMP .command_ff + - LDA !REG_MSU_DELAYED_COMMAND : BEQ .do_fade + LDA !REG_MSU_DELAYED_COMMAND : BNE + : JMP .do_fade : + .check_busy 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 JML SPCContinue .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 - LDA #$00 : STA !MSU_RESUME_CANCEL + LDA !MSU_RESUME_CONTROL : EOR !FLAG_RESUME_CANCEL : STA !MSU_RESUME_CONTROL JML SPCContinue + LDA !VAL_VOLUME_FULL 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_MSU_VOLUME + LDA !REG_CURRENT_MSU_TRACK : DEC : PHA AND.b #$07 : TAY PLA : LSR #3 : TAX @@ -677,13 +688,15 @@ MSUMain: LDA !NMI_COUNTER : !SUB !MSU_RESUME_TIME : PHA LDA !NMI_COUNTER+2 : SBC !MSU_RESUME_TIME+2 : BNE ++ PLA : CMP MSUResumeTimer : !BGE +++ - SEP #$20 : BRA .done_resume + SEP #$20 + LDA !FLAG_RESUME_FADEIN : BRA .done_resume ++ PLA +++ SEP #$20 - LDA #$01 : STA !MSU_RESUME_CANCEL + LDA !FLAG_RESUME_CANCEL .done_resume: + STA !MSU_RESUME_CONTROL LDA #$00 : STA !MSU_RESUME_TRACK + CPX #07 : BNE + ; Kakariko Village From 14844400b3738b4fa28d125d44573e8aff1434c4 Mon Sep 17 00:00:00 2001 From: Bonta <40473493+Bonta0@users.noreply.github.com> Date: Sun, 13 Jun 2021 00:38:00 +0200 Subject: [PATCH 13/18] MSU1: Minor tweaks to avoid a long jump in main path --- msu.asm | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/msu.asm b/msu.asm index f004751..e239b52 100644 --- a/msu.asm +++ b/msu.asm @@ -553,6 +553,7 @@ MSUMain: LDA !REG_MSU_ID_01 : CMP !VAL_MSU_ID_01 : BEQ .continue .nomsu SEP #$30 + - JML SPCContinue .continue LDA !REG_MSU_ID_23 : CMP !VAL_MSU_ID_23 : BNE .nomsu @@ -561,25 +562,23 @@ MSUMain: LDX !REG_MUSIC_CONTROL : BEQ + JMP .command_ff + - LDA !REG_MSU_DELAYED_COMMAND : BNE + : JMP .do_fade : + + LDA !REG_MSU_DELAYED_COMMAND : BEQ .do_fade .check_busy - LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_AUDIO_BUSY : BEQ .ready - JML SPCContinue + LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_AUDIO_BUSY : BNE - .ready - LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_TRACK_MISSING : BEQ .start - JML SPCContinue + LDA !REG_MSU_STATUS : BIT !FLAG_MSU_STATUS_TRACK_MISSING : BNE - .start - LDA !MSU_RESUME_CONTROL : AND !FLAG_RESUME_CANCEL : BEQ + + LDA !MSU_RESUME_CONTROL : BIT !FLAG_RESUME_CANCEL : BEQ + + EOR !FLAG_RESUME_CANCEL : STA !MSU_RESUME_CONTROL REP #$20 : LDA !REG_MSU_LOADED_TRACK : STA !REG_MSU_TRACK : SEP #$20 - LDA !MSU_RESUME_CONTROL : EOR !FLAG_RESUME_CANCEL : STA !MSU_RESUME_CONTROL - JML SPCContinue + BRA - + LDA !VAL_VOLUME_FULL 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 !MSU_RESUME_CONTROL : BIT !FLAG_RESUME_FADEIN : BEQ + + EOR !FLAG_RESUME_FADEIN : STA !MSU_RESUME_CONTROL LDA #$00 BRA ++ + From 77f742b25cff3840b9239bef4ea5434d82a4611e Mon Sep 17 00:00:00 2001 From: cassidy Date: Mon, 14 Jun 2021 13:14:38 -0400 Subject: [PATCH 14/18] Rewrite to handle electro palette, leave bunny alone Should fix bunny issues Big thank to kara for report, assistance, and testing --- accessibility.asm | 114 ++++++++++++++++++++++++++++++---------------- events.asm | 2 +- hooks.asm | 23 ++++++---- spriteswap.asm | 4 +- 4 files changed, 92 insertions(+), 51 deletions(-) diff --git a/accessibility.asm b/accessibility.asm index 3504a12..f3a0fd8 100644 --- a/accessibility.asm +++ b/accessibility.asm @@ -24,8 +24,7 @@ RTL ;================================================================================ ConditionalWhitenBg: LDX.b #$00 - LDA.l DisableFlashing - REP #$20 : BNE + + LDA.l DisableFlashing : REP #$20 : BNE + LDA $00,X JSR WhitenLoopReal RTL @@ -55,10 +54,10 @@ WhitenLoopReal: LDA $7EC3F4 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F4 LDA $10 : CMP.w #$07 : BNE + LDA $048E - CMP.w #$3C : BEQ ++ ; hookshot cave - CMP.w #$9D : BEQ ++ ; gt right - CMP.w #$9C : BEQ ++ ; gt big room - CMP.w #$A5 : BEQ ++ ; wizzrobes 1 + CMP.w #$3C : BEQ ++ + CMP.w #$9D : BEQ ++ + CMP.w #$9C : BEQ ++ + CMP.w #$A5 : BEQ ++ + LDA $7EC3F6 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F6 LDA $7EC3F8 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F8 @@ -68,7 +67,6 @@ WhitenLoopReal: LDA $7EC3F8 : JSL Filter_Majorly_Whiten_Color : STA $7EC5F8 BRA +++ +++ - LDA $7EC3FA : JSL Filter_Majorly_Whiten_Color : STA $7EC5FA LDA $7EC3FC : JSL Filter_Majorly_Whiten_Color : STA $7EC5FC LDA $7EC3FE : JSL Filter_Majorly_Whiten_Color : STA $7EC5FE @@ -97,7 +95,6 @@ WhitenLoopDummy: INX #2 : CPX.b #$10 : BEQ + JMP - + - LDA $7EC3F0 : JSL Filter_Majorly_Whiten_Color : LDA $7EC5F0 LDA $7EC3F2 : JSL Filter_Majorly_Whiten_Color : LDA $7EC5F2 LDA $7EC3F4 : JSL Filter_Majorly_Whiten_Color : LDA $7EC5F4 @@ -165,7 +162,7 @@ RestoreBgEther: INX #2 : CPX.b #$10 : BNE - BRA ++ ++ - JML $02FF51 +JML $02FF51 ;================================================================================ DDMConditionalLightning: LDA.l DisableFlashing @@ -184,7 +181,6 @@ DDMConditionalLightning: LDA $F523, Y : LDA $7EC5F0, X INY #2 INX #2 : CPX.b #$10 : BNE - - JML $07FAAC ;================================================================================ ConditionalGTFlash: @@ -213,17 +209,15 @@ ConditionalRedFlash: LDA.w #$25FF : STA $7EC5DC LDA.w #$001A RTL - + LDA $00 LDA.w #$1D59 : LDA $7EC5DA LDA.w #$25FF : LDA $7EC5DC LDA.w #$0000 -RTL + RTL ;================================================================================ ConditionalPedAncilla: - LDA.l DisableFlashing - REP #$20 : BNE + + LDA.l DisableFlashing : REP #$20 : BNE + LDA $00,X LDA $00 : STA $04 LDA $02 : STA $06 @@ -232,32 +226,74 @@ ConditionalPedAncilla: LDA $00 LDA $00 : LDA $04 LDA $02 : LDA $06 + RTL +;================================================================================ +LoadElectroPalette: + REP #$20 + LDA.w #$0202 : STA $0C + LDA.w #$0404 : STA $0E + LDA.w #$001B : STA $02 + SEP #$10 + LDX $0C : LDA $1BEBB4, X : AND.w #$00FF : ADC #$D630 + REP #$10 : LDX.w #$01B2 : LDY.w #$0002 + JSR ConditionalLoadGearPalette + SEP #$10 + LDX $0D + LDA $1BEBC1, X : AND.w #$00FF : ADC #$D648 + REP #$10 + LDX.w #$01B8 : LDY.w #$0003 + JSR ConditionalLoadGearPalette + SEP #$10 + LDX $0E + LDA $1BEC06, X : AND.w #$00FF : ASL A : ADC #$D308 + REP #$10 + LDX.w #$01E2 : LDY.w #$000E + JSR ConditionalLoadGearPalette + SEP #$30 + INC $15 RTL ;================================================================================ -ConditionalChangeGearPalette: - PHY - STA $00 - SEP #$20 - LDA.l DisableFlashing : REP #$20 : BNE + - LDA $00,X - - - LDA [$00] : STA $7EC300, X : STA $7EC500, X - INC $00 : INC $00 - INX #2 - DEY : BPL - - BRA ++ - + - LDA $00 - - - LDA [$00] : LDA $7EC300, X : LDA $7EC500, X - INC $00 : INC $00 - INX #2 - DEY : BPL - - BRA ++ - ++ - PLY ; use what was in Y register to determine which p flags to set - CPY #$000E : BNE + +ConditionalLoadGearPalette: + STA $00 SEP #$20 - + - SEP #$10 + LDA.l DisableFlashing : REP #$20 : BNE + + LDA $00,X + - + LDA [$00] + STA $7EC500, X + INC $00 : INC $00 + INX #2 + DEY + BPL - + RTS + + + LDA $00 + - + LDA [$00] + LDA $7EC500, X + INC $00 : INC $00 + INX #2 + DEY + BPL - +RTS +;================================================================================ +RestoreElectroPalette: + REP #$30 + LDX.w #$01B2 : LDY.w #$0002 + JSR FillPaletteBufferFromAux + LDX.w #$01B8 : LDY.w #$0003 + JSR FillPaletteBufferFromAux + LDX.w #$01E2 : LDY.w #$000E + JSR FillPaletteBufferFromAux + SEP #$30 + INC $15 RTL +;================================================================================ +FillPaletteBufferFromAux: + - + LDA $7EC300, X + STA $7EC500, X + INX #2 + DEY + BPL - +RTS diff --git a/events.asm b/events.asm index bf17db1..0e0e090 100644 --- a/events.asm +++ b/events.asm @@ -16,7 +16,7 @@ OnPrepFileSelect: OnDrawHud: JSL.l DrawChallengeTimer ; this has to come before NewDrawHud because the timer overwrites the compass counter JSL.l NewDrawHud - JSL.l SwapSpriteIfNecissary + JSL.l SwapSpriteIfNecessary JSL.l CuccoStorm JSL.l PollService JML.l ReturnFromOnDrawHud diff --git a/hooks.asm b/hooks.asm index 9014a7b..6bc8153 100755 --- a/hooks.asm +++ b/hooks.asm @@ -737,9 +737,6 @@ dw $0000, $0002, $0004, $0032, $0004, $0006, $0030 ;JSL FlipGreenPendant ;NOP #6 ;-------------------------------------------------------------------------------- -org $08AAF9 ; -< 42AF9 - ancilla_ether_spell.asm : 46 (JSL Palette_Restore_BG_From_Flash) -JSL.l RestoreBgEther -;-------------------------------------------------------------------------------- org $02A3F4 ; <- 123F4 - Bank02.asm : 6222 (LDA.b #$72 : BRA .setBrightness) BRA + : NOP #2 : + org $02A3FD ; <- 123FD - Bank02.asm : 6233 (LDA.b #$32 : STA $9a) @@ -748,6 +745,15 @@ JSL.l ConditionalLightning org $1DE9CD ; <- EE9CD - Bank1D.asm : 568 (JSL Filter_Majorly_Whiten_Bg) JSL.l ConditionalWhitenBg ;-------------------------------------------------------------------------------- +org $08AAE9 ; <- 042AE9 - ancilla_ether_spell.asm : 34 (JSL Palette_ElectroThemedGear) +JSL.l LoadElectroPalette +;-------------------------------------------------------------------------------- +org $08AAF5 ; <- 042AF5 - ancilla_ether_spell.asm : 45 (JSL LoadActualGearPalettes) +JSL.l RestoreElectroPalette +;-------------------------------------------------------------------------------- +org $08AAF9 ; -< 42AF9 - ancilla_ether_spell.asm : 46 (JSL Palette_Restore_BG_From_Flash) +JSL.l RestoreBgEther +;-------------------------------------------------------------------------------- org $08AAED ; <- 42AED - ancilla_ether_spell.asm : 35 (JSL Filter_Majorly_Whiten_Bg) JSL.l ConditionalWhitenBg ;-------------------------------------------------------------------------------- @@ -766,14 +772,13 @@ JSL.l ConditionalRedFlash : BRA + : NOP #13 : + org $08C2A1 ; <- 442A3 - ancilla_sword_ceremony.asm : 54 (REP #$20) JSL.l ConditionalPedAncilla : BRA + : NOP #4 : + ;-------------------------------------------------------------------------------- -org $02FDB1 ; <- 17DB1 - Bank0E.asm : 3760 (JSL LoadGearPalette) -JSL.l ConditionalChangeGearPalette : NOP +org $079976 ; <- 039976 - Bank07.asm : 4009 (JSL Palette_ElectroThemedGear) +JSL.l LoadElectroPalette ;-------------------------------------------------------------------------------- -org $02FDCB ; <- 17DCB - Bank0E.asm : 3775 (JSL LoadGearPalette) -JSL.l ConditionalChangeGearPalette : NOP +org $07997C ; <- 03997C - Bank07.asm : 4015 (JSL LoadActualGearPalettes) +JSL.l RestoreElectroPalette ;-------------------------------------------------------------------------------- -org $02FDE6 ; <- 17DE6 - Bank0E.asm : 3789 (JSL LoadGearPalette) -JSL.l ConditionalChangeGearPalette : NOP + ;================================================================================ ; Ice Floor Toggle ;-------------------------------------------------------------------------------- diff --git a/spriteswap.asm b/spriteswap.asm index 022cc51..ab5e82c 100644 --- a/spriteswap.asm +++ b/spriteswap.asm @@ -15,7 +15,7 @@ RTL !BANK_BASE = "#$29" org $BF8000 -SwapSpriteIfNecissary: +SwapSpriteIfNecessary: PHP SEP #$20 ; set 8-bit accumulator LDA !SPRITE_SWAP : BEQ + : !ADD !BANK_BASE : CMP $BC : BEQ + @@ -83,4 +83,4 @@ SpriteSwap_Palette_ArmorAndGloves: INC $15 PLA : PLY : PLX RTL -} \ No newline at end of file +} From ac2aab4044651b4a8124e60b7ceff35f0f70ede6 Mon Sep 17 00:00:00 2001 From: cassidy Date: Mon, 14 Jun 2021 15:55:21 -0400 Subject: [PATCH 15/18] Additional comments and style cleanup for consistency --- accessibility.asm | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/accessibility.asm b/accessibility.asm index f3a0fd8..6e88345 100644 --- a/accessibility.asm +++ b/accessibility.asm @@ -162,7 +162,7 @@ RestoreBgEther: INX #2 : CPX.b #$10 : BNE - BRA ++ ++ -JML $02FF51 +JML $02FF51 ; Bank0E.asm : 3936 vanilla restore routine after loop which RTLs ;================================================================================ DDMConditionalLightning: LDA.l DisableFlashing @@ -170,7 +170,7 @@ DDMConditionalLightning: BNE + LDA.w $0000 LDX.b #$02 - JML $07FA7F + JML $07FA7F ; Bank0E.asm : 4738 vanilla loop equivalent to below beginning at LDY #$00 + LDA.b $00 : LDX.b #$02 : LDY #$00 - @@ -181,13 +181,11 @@ DDMConditionalLightning: LDA $F523, Y : LDA $7EC5F0, X INY #2 INX #2 : CPX.b #$10 : BNE - -JML $07FAAC + JML $07FAAC ; Bank0E.asm : 4754 both branches converge here ;================================================================================ ConditionalGTFlash: - LDA.l DisableFlashing - REP #$20 - BNE + - LDA $0000 + LDA.l DisableFlashing : REP #$20 : BNE + + LDA $0000 - LDA $F9C1, Y : STA $7EC5D0, X INY #2 @@ -199,11 +197,10 @@ ConditionalGTFlash: LDA $F9C1, Y : LDA $7EC5D0, X INY #2 INX #2 : CPX.b #$10 : BNE - -RTL + RTL ;================================================================================ ConditionalRedFlash: - LDA.l DisableFlashing - REP #$20 : BNE + + LDA.l DisableFlashing : REP #$20 : BNE + LDA $00,X LDA.w #$1D59 : STA $7EC5DA LDA.w #$25FF : STA $7EC5DC @@ -240,14 +237,12 @@ LoadElectroPalette: SEP #$10 LDX $0D LDA $1BEBC1, X : AND.w #$00FF : ADC #$D648 - REP #$10 - LDX.w #$01B8 : LDY.w #$0003 + REP #$10 : LDX.w #$01B8 : LDY.w #$0003 JSR ConditionalLoadGearPalette SEP #$10 LDX $0E LDA $1BEC06, X : AND.w #$00FF : ASL A : ADC #$D308 - REP #$10 - LDX.w #$01E2 : LDY.w #$000E + REP #$10 : LDX.w #$01E2 : LDY.w #$000E JSR ConditionalLoadGearPalette SEP #$30 INC $15 @@ -275,7 +270,7 @@ ConditionalLoadGearPalette: INX #2 DEY BPL - -RTS + RTS ;================================================================================ RestoreElectroPalette: REP #$30 From 429fea004f71be41f3d36768fd438602401ce4e6 Mon Sep 17 00:00:00 2001 From: qwertymodo Date: Fri, 18 Jun 2021 16:50:49 -0700 Subject: [PATCH 16/18] Set DB/DP to 0 in frame hook Possible fix for hole transition crashes --- framehook.asm | 8 +++++--- msu.asm | 6 +----- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/framehook.asm b/framehook.asm index c4927e3..9fd89f8 100644 --- a/framehook.asm +++ b/framehook.asm @@ -22,8 +22,10 @@ !LOCK_STATS = "$7EF443" FrameHookAction: JSL $0080B5 ; Module_MainRouting - JSL CheckMusicLoadRequest - PHA : PHP + PHP : PHB : PHD : REP #$30 : PHA : PHX : PHY + LDA #$0000 : TCD : SEP #$20 : PHA : PLB + JSL CheckMusicLoadRequest + ;LDA EnableSRAMTrace : AND.l TournamentSeedInverse : BEQ + ; LDA $1A : BNE ++ : JSL.l WriteStatusPreview : ++ ; write every 256 frames ;+ @@ -39,7 +41,7 @@ FrameHookAction: + SEP #$20 ; set 8-bit accumulator ?? check this ++ - PLP : PLA + REP #$30 : PLY : PLX : PLA : PLD : PLB : PLP RTL ;-------------------------------------------------------------------------------- NMIHookAction: diff --git a/msu.asm b/msu.asm index e239b52..ca739e5 100644 --- a/msu.asm +++ b/msu.asm @@ -186,7 +186,6 @@ RTS ; Extended OST/SPC fallback, decide which track to actually play ;-------------------------------------------------------------------------------- CheckMusicLoadRequest: - PHP : REP #$10 : PHA : PHX : PHY 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 @@ -196,7 +195,6 @@ CheckMusicLoadRequest: .skip LDA !REG_MUSIC_CONTROL_REQUEST STA !REG_MUSIC_CONTROL : STZ !REG_MUSIC_CONTROL_REQUEST - PLY : PLX : PLA : PLP RTL .continue @@ -357,13 +355,11 @@ CheckMusicLoadRequest: .done LDA !REG_MUSIC_CONTROL_REQUEST : STA !REG_MUSIC_CONTROL : STZ !REG_MUSIC_CONTROL_REQUEST - PLY : PLX : PLA : PLP RTL .sfx_indoors LDA !REG_MUSIC_CONTROL_REQUEST : STA !REG_MUSIC_CONTROL : STZ !REG_MUSIC_CONTROL_REQUEST - PLY : PLX : PLA : PLP - PHP : SEP #$20 : LDA.b #$05 : STA $012D : PLP + SEP #$20 : LDA.b #$05 : STA $012D ; Vanilla subroutine expects 8-bit A, doesn't use X/Y JML Module_PreDungeon_setAmbientSfx ;-------------------------------------------------------------------------------- From cc9c355ef7e34efa4e2059ea6a3a2358a836c053 Mon Sep 17 00:00:00 2001 From: qwertymodo Date: Mon, 21 Jun 2021 13:42:16 -0700 Subject: [PATCH 17/18] 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 9fd89f8..db39bba 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 ca739e5..76fb53c 100644 --- a/msu.asm +++ b/msu.asm @@ -186,6 +186,8 @@ RTS ; 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 @@ -195,6 +197,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 @@ -355,11 +358,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 ;-------------------------------------------------------------------------------- @@ -737,12 +742,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 ;-------------------------------------------------------------------------------- @@ -765,7 +770,7 @@ PendantFanfareWait: jml PendantFanfareContinue .spc SEP #$20 - LDA !REG_SPC_CONTROL : BNE .continue + LDA.l !REG_SPC_CONTROL : BNE .continue .done jml PendantFanfareDone ;-------------------------------------------------------------------------------- @@ -789,7 +794,7 @@ CrystalFanfareWait: jml CrystalFanfareContinue .spc SEP #$20 - LDA !REG_SPC_CONTROL : BNE .continue + LDA.l !REG_SPC_CONTROL : BNE .continue .done jml CrystalFanfareDone ;-------------------------------------------------------------------------------- From 717434bd88867b447454407eec97050aaf8d0abe Mon Sep 17 00:00:00 2001 From: aerinon Date: Tue, 22 Jun 2021 13:05:40 -0600 Subject: [PATCH 18/18] Bank notes added --- LTTP_RND_GeneralBugfixes.asm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index 81e678f..dcd0a6b 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -334,6 +334,8 @@ warnpc $B08000 ;$22 Contrib Code ;$23 Stats & Credits ;$24 Code Bank +;$27 DR Code Bank +;$28 Keydrop Code bank ;$29 External hooks (rest of bank not used) ;$2E Reserved for Tournament Use ;$2F Static RNG (rest is reserved for tournament use)