Files
alttpr-baserom/fastcredits.asm
2024-04-09 09:26:27 -06:00

158 lines
2.0 KiB
NASM

FastCreditsActive = $50
;===================================================================================================
FlagFastCredits:
LDA.b #$40
TRB.b FastCreditsActive
AND.b Joy1B_All
TSB.b FastCreditsActive
LDA.b #$20
AND.b Joy1A_New
EOR.b FastCreditsActive
STA.b FastCreditsActive
LDA.b FastCreditsActive
AND.b #$60
BEQ .slow
LDA.b #$01
TSB.b FastCreditsActive
.slow
LDA.b GameSubMode
ASL
TAX
RTL
;===================================================================================================
FastCreditsCutsceneTimer:
LDA.b ScrapBufferBD+$0B
INC
JSR IsFastCredits
BCC .slow
INC
INC
INC
AND.w #$FFFE
.slow
STA.b ScrapBufferBD+$0B
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 Credits_ScrollScene_target_y,X ; compare to target
ROL.b Scrap00 ; put carry in here
LDA.l Credits_ScrollScene_movement_y,X ; get movement
BPL ++ ; if positive, leave saved carry alone
INC.b Scrap00 ; otherwise, flip it
++ ROR.b Scrap00 ; recover carry
BCC ++ ; scroll if carry not set
LDA.w #$0000
++ JSR IsFastCredits
BCC .slow
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 BG2H
STA.b BG2H
RTL
FastCreditsCutsceneUnderworldY:
JSR FastCreditsCutsceneScrollY
CLC
ADC.b BG2V
STA.b BG2V
RTL
FastTextScroll:
LDA.b FrameCounter
SEP #$10
JSR IsFastCredits
BCC .slow
AND.w #$0000
REP #$10
RTL
.slow
AND.w #$0003
REP #$10
RTL
DumbFlagForMSU:
STA.l CurrentWorld
STZ.b FastCreditsActive
RTL
IsFastCredits:
LDY.b FastCreditsActive
CPY.b #$20
RTS