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..97f23a6 --- /dev/null +++ b/fastcredits.asm @@ -0,0 +1,124 @@ +;=================================================================================================== + +FastCreditsCutsceneTimer: + BIT.b $F2-1 : BVC .slow + + LDA.w #$0001 : STA.b $50 + + 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: + JSR FastCreditsCutsceneScrollX + CLC + ADC.b $E2 + STA.b $E2 + + RTL + + +FastCreditsCutsceneUnderworldY: + JSR FastCreditsCutsceneScrollY + CLC + ADC.b $E8 + STA.b $E8 + + RTL + + +FastTextScroll: + LDA.b $1A + BIT.b $F2-1 : BVC .slow + + AND.w #$0000 + RTL + +.slow + AND.w #$0003 + RTL + +DumbFlagForMSU: + STA.l $7EF3CA + STZ.b $50 + RTL + + 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 e0884e2..9014a7b 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 @@ -2609,4 +2610,32 @@ Sprite_AttemptDamageToPlayerPlusRecoilLong: org $1ED1B6 JSL NewFireBarDamage + ;================================================================================ +; Remove heart beeps from 1/2 max HP +org $0DDB60 +db $00, $00 + + +;================================================================================ +; Fast credits + +org $02A096 +JSL DumbFlagForMSU + +org $0EC3AF +JSL FastCreditsScrollOW +JMP.w $0EC3C7 + +org $0EC41F +JSL FastCreditsCutsceneUnderworldY + +org $0EC42C +JSL FastCreditsCutsceneUnderworldX + + +org $0EC488 +JSL FastCreditsCutsceneTimer + +org $0EE773 +JSL FastTextScroll : NOP 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