;license:MIT ;(c) 2019 by 4am ; ; randomized fade-to-black routine customized for a specific piece of cover art ; with 75 fill rectangles ; ; Linear Congruential Pseudo-Random Number Generator ; (c) 2004 Bruce Clark ; http://www.6502.org/source/integers/random/random.html !cpu 6502 !to "build/FX/COVERFADE",plain *=$6000 COUNTER = $F7 SEED = $F8 ; 4 bytes TMP = $FC ; 4 bytes jsr InitPRNG lda #$80 sta COUNTER - jsr PRNG lda SEED+3 tax ldy COUNTER lda Order,x pha lda Order,y sta Order,x pla sta Order,y inc COUNTER bne - - ldx COUNTER ldy Order,x bmi + lda TransformHi,y sta @j+2 lda TransformLo,y sta @j+1 @j jsr $FDFD ; SMC lda #80 sec @wait1 pha @wait2 sbc #1 bne @wait2 pla sbc #1 bne @wait1 + inc COUNTER bne - rts InitPRNG lda $4E sta SEED lda $4F sta SEED+1 lda $c050 sta SEED+2 lda $c000 sta SEED+3 rts PRNG lda #$01 ldx #$03 - sta TMP,x lsr dex bpl - ldy #$20 bne @rotateseed ; always branches @loop bcc @rotatetmp clc ldx #$03 - lda TMP,x adc @randtable,x sta TMP,x dex bpl - @rotatetmp ror TMP ror TMP+1 ror TMP+2 ror TMP+3 @rotateseed ror SEED+3 ror SEED+2 ror SEED+1 ror SEED dey bpl @loop rts @randtable !byte $00,$19,$66,$0D Order !byte 73 !byte 31 !byte 71 !byte 13 !byte 50 !byte 36 !byte 66 !byte 46 !byte 57 !byte 18 !byte 15 !byte 55 !byte 45 !byte 26 !byte 6 !byte 0 !byte 9 !byte 8 !byte 35 !byte 23 !byte 43 !byte 44 !byte 2 !byte 48 !byte 5 !byte 52 !byte 41 !byte 25 !byte 67 !byte 56 !byte 12 !byte 29 !byte 7 !byte 34 !byte 74 !byte 40 !byte 1 !byte 72 !byte 54 !byte 19 !byte 39 !byte 58 !byte 68 !byte 51 !byte 28 !byte 33 !byte 4 !byte 42 !byte 64 !byte 60 !byte 3 !byte 24 !byte 17 !byte 27 !byte 53 !byte 65 !byte 37 !byte 69 !byte 11 !byte 70 !byte 22 !byte 63 !byte 30 !byte 32 !byte 21 !byte 61 !byte 47 !byte 16 !byte 62 !byte 49 !byte 59 !byte 38 !byte 10 !byte 20 !byte 14 !fill 181,$FF !source "src/wait.a" !source "src/fx/fx.cover.fade.data.a"