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