mirror of
https://github.com/a2-4am/4cade.git
synced 2024-06-01 08:41:31 +00:00
183 lines
3.3 KiB
Plaintext
183 lines
3.3 KiB
Plaintext
;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
|
|
|
|
RAND7BIT
|
|
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"
|