;license:MIT ;(c) 2019 by qkumba ;(c) 2020 by 4am ; ; animated interstitial screen ; ; Public functions: ; - MaybeShowInterstitial ; progressStringsLo !byte sProgress10 !byte >sProgress20 !byte >sProgress30 !byte >sProgress40 !byte >sProgress50 !byte >sProgress60 !byte >sProgress70 !byte >sProgress80 !byte >sProgress90 !byte >sProgress100 progressHTABs !byte 7 !byte 8 !byte 8 !byte 8 !byte 7 !byte 2 !byte 9 !byte 7 !byte 6 !byte 4 ;------------------------------------------------------------------------------ ; MaybeShowInterstitial ; display interstitial progress animation after every 10 completed puzzles ; ; in: A = next puzzle ID (in this world) ; X = # of puzzles completed (in this world) ; out: preserves A ; C set if all puzzles were completed ; C clear if there are more puzzles in this world (and A = next puzzle ID) ; Y, other flags clobbered ;------------------------------------------------------------------------------ MaybeShowInterstitial pha cpx #100 bne + ldy #10 jsr ShowInterstitialWorldComplete sec bcs @exit ; always branches + ldy #0 - iny dex dex dex dex dex dex dex dex dex dex ; don't judge me bmi + bne - jsr ShowInterstitialWorldProgress + clc @exit pla rts ShowInterstitialWorldProgress ShowInterstitialWorldComplete ; [private] ; in: Y = which progress string to display (1..9) ; out: all registers and flags clobbered bit CLEARKBD tya tax dex jsr Home lda #11 sta targetVTAB lda progressHTABs, x sta minHTAB lda progressStringsHi, x tay lda progressStringsLo, x jsr HeavySilkReveal lda KBD bmi + ; wildcard, will allow any key to terminate sound +LDADDR sOneSpace +ST16 $EE +LDADDR InterstitialProgressMusic jsr PlaySound ldx #21 jsr LongWaitForKeyWithTimeout bmi + lda #0 sta targetVTAB sta minHTAB +LDADDR sOneSpace jsr HeavySilkReveal + jmp Home