construct block fizzle data at runtime

This commit is contained in:
4am 2020-11-30 18:22:06 -05:00
parent 3e504a80d8
commit d253388c9d
6 changed files with 117 additions and 1002 deletions

View File

@ -1,17 +1,17 @@
;license:MIT
;(c) 2018 by 4am
;(c) 2018-2020 by 4am/qkumba
;
!cpu 6502
!to "build/FX/BLOCK.FIZZLE",plain
*=$6000
coord = $FE
!source "src/fx/fx.hgr.block.fizzle.common.a"
lda #<@coords
sta coord
lda #>@coords
sta coord+1
@loop
+BUILD_BLOCK_FIZZLE_DATA
+LDADDR Coordinates
+ST16 coord
@loop2
ldy #0
lda (coord),y
bmi @exit
@ -30,12 +30,9 @@ coord = $FE
+ inc coord
bne +
inc coord+1
+ bne @loop
+ bne @loop2
@exit rts
@coords
!source "src/fx/fx.hgr.block.fizzle.data.a"
!source "src/wait.a"
!source "src/fx/fx.hgr.common.a"
+HGR_BLOCK_COPY_ROUTINES

View File

@ -0,0 +1,91 @@
;license:MIT
;(c) 2020 by qkumba
;
coord = $FE
Coordinates = $7000 ; about $700 bytes, can be anywhere
!source "src/fx/macros.a"
!macro BUILD_BLOCK_FIZZLE_DATA {
lda #<Coordinates
sta coord
lda #>Coordinates
sta coord+1
;init RNG
ldx #1
stx @rnd1+1
dex
stx @rnd2+1
;iterate
@loop
ldy @rnd1+1
ldx @rnd2+1
lsr @rnd2+1
ror @rnd1+1
bcc +
;feedback polynomial forms #$204 for period of 1023
lda @rnd1+1
eor #4
sta @rnd1+1
lda @rnd2+1
eor #2
sta @rnd2+1
+ tya
eor #$ff
ldy #0
- cpx #0
bne +
cmp #40
bcc ++
+ sbc #40
pha
txa
sbc #0
tax
pla
iny
bne -
++ cpy #24
bcs @rnd2
tax
tya
jsr @stainc
txa
jsr @stainc
@rnd2 lda #0
bne @loop
@rnd1 lda #0
cmp #1
bne @loop
;include the missing point
lda #6
jsr @stainc
lda #15
jsr @stainc
lda #$ff
jsr @stainc
bne ++ ; always branches
@stainc
ldy #0
sta (coord), y
inc coord
bne +
inc coord+1
+ rts
++
}

View File

@ -1,961 +0,0 @@
!byte 0,0
!byte 7,21
!byte 9,21
!byte 9,29
!byte 13,39
!byte 22,19
!byte 18,28
!byte 8,14
!byte 3,39
!byte 17,19
!byte 18,30
!byte 8,15
!byte 19,39
!byte 6,29
!byte 18,14
!byte 8,39
!byte 13,30
!byte 14,3
!byte 22,33
!byte 12,24
!byte 5,12
!byte 2,6
!byte 0,35
!byte 16,31
!byte 23,15
!byte 6,24
!byte 2,12
!byte 0,38
!byte 14,24
!byte 6,12
!byte 2,38
!byte 15,25
!byte 11,22
!byte 18,21
!byte 11,37
!byte 21,18
!byte 9,26
!byte 19,29
!byte 12,23
!byte 21,11
!byte 10,28
!byte 4,14
!byte 1,39
!byte 16,19
!byte 23,9
!byte 13,2
!byte 6,1
!byte 18,32
!byte 3,24
!byte 0,22
!byte 15,5
!byte 23,2
!byte 11,1
!byte 21,0
!byte 10,0
!byte 4,32
!byte 23,21
!byte 13,21
!byte 20,26
!byte 9,13
!byte 20,6
!byte 9,35
!byte 20,17
!byte 12,4
!byte 5,34
!byte 2,17
!byte 16,8
!byte 7,36
!byte 3,18
!byte 16,20
!byte 7,10
!byte 3,5
!byte 17,2
!byte 8,1
!byte 19,32
!byte 9,16
!byte 7,23
!byte 10,29
!byte 20,14
!byte 9,39
!byte 20,19
!byte 13,34
!byte 6,17
!byte 18,8
!byte 8,36
!byte 7,30
!byte 17,23
!byte 22,30
!byte 10,15
!byte 20,39
!byte 18,27
!byte 13,19
!byte 12,26
!byte 5,13
!byte 18,6
!byte 8,35
!byte 5,30
!byte 23,27
!byte 12,13
!byte 21,38
!byte 10,19
!byte 20,9
!byte 12,18
!byte 5,9
!byte 18,4
!byte 8,34
!byte 3,30
!byte 16,23
!byte 23,11
!byte 14,1
!byte 22,32
!byte 4,24
!byte 1,12
!byte 0,6
!byte 15,17
!byte 11,20
!byte 2,21
!byte 16,10
!byte 7,37
!byte 19,18
!byte 20,20
!byte 9,10
!byte 4,5
!byte 17,34
!byte 8,17
!byte 19,8
!byte 9,4
!byte 4,2
!byte 1,33
!byte 16,16
!byte 7,8
!byte 3,4
!byte 1,2
!byte 0,1
!byte 15,32
!byte 7,16
!byte 1,20
!byte 14,39
!byte 13,38
!byte 6,19
!byte 18,9
!byte 8,30
!byte 3,15
!byte 17,7
!byte 2,26
!byte 0,13
!byte 15,38
!byte 7,19
!byte 8,29
!byte 19,14
!byte 9,7
!byte 20,3
!byte 13,8
!byte 6,4
!byte 2,34
!byte 15,24
!byte 3,22
!byte 16,21
!byte 23,10
!byte 11,5
!byte 21,2
!byte 10,1
!byte 20,32
!byte 1,28
!byte 6,25
!byte 18,12
!byte 8,38
!byte 11,30
!byte 18,23
!byte 10,26
!byte 4,13
!byte 17,38
!byte 8,19
!byte 19,9
!byte 12,2
!byte 5,33
!byte 18,16
!byte 8,8
!byte 3,36
!byte 1,18
!byte 19,31
!byte 22,24
!byte 10,12
!byte 4,38
!byte 23,28
!byte 5,23
!byte 22,22
!byte 10,11
!byte 20,37
!byte 21,28
!byte 17,27
!byte 12,15
!byte 21,39
!byte 14,18
!byte 6,9
!byte 18,36
!byte 3,25
!byte 8,22
!byte 3,11
!byte 17,5
!byte 11,33
!byte 21,16
!byte 1,26
!byte 21,31
!byte 14,27
!byte 22,13
!byte 21,25
!byte 5,27
!byte 11,27
!byte 12,11
!byte 21,37
!byte 12,9
!byte 21,36
!byte 10,18
!byte 4,9
!byte 17,36
!byte 8,18
!byte 3,9
!byte 17,4
!byte 8,2
!byte 3,33
!byte 17,16
!byte 15,30
!byte 19,23
!byte 14,5
!byte 22,34
!byte 20,24
!byte 9,12
!byte 4,6
!byte 1,35
!byte 16,17
!byte 23,8
!byte 11,4
!byte 5,2
!byte 2,1
!byte 16,32
!byte 23,23
!byte 22,26
!byte 10,13
!byte 20,38
!byte 13,7
!byte 22,3
!byte 13,24
!byte 0,27
!byte 15,13
!byte 23,6
!byte 11,3
!byte 21,1
!byte 12,32
!byte 0,28
!byte 15,3
!byte 23,1
!byte 13,0
!byte 6,0
!byte 2,32
!byte 15,21
!byte 11,21
!byte 10,21
!byte 20,10
!byte 9,37
!byte 20,18
!byte 9,9
!byte 20,4
!byte 9,34
!byte 4,17
!byte 17,8
!byte 8,4
!byte 3,34
!byte 1,17
!byte 7,31
!byte 14,29
!byte 22,14
!byte 10,39
!byte 18,29
!byte 11,39
!byte 21,19
!byte 13,26
!byte 8,27
!byte 19,13
!byte 12,3
!byte 21,33
!byte 12,8
!byte 5,36
!byte 2,18
!byte 0,9
!byte 15,36
!byte 7,18
!byte 17,20
!byte 19,30
!byte 20,23
!byte 14,17
!byte 22,8
!byte 10,36
!byte 1,25
!byte 11,31
!byte 14,9
!byte 22,36
!byte 4,25
!byte 17,12
!byte 8,6
!byte 3,35
!byte 17,17
!byte 16,30
!byte 7,15
!byte 19,7
!byte 14,16
!byte 6,8
!byte 2,36
!byte 7,22
!byte 17,21
!byte 20,30
!byte 9,15
!byte 20,7
!byte 14,4
!byte 6,34
!byte 16,24
!byte 7,12
!byte 3,6
!byte 1,3
!byte 16,1
!byte 23,32
!byte 11,16
!byte 2,20
!byte 0,10
!byte 15,18
!byte 19,20
!byte 4,21
!byte 17,10
!byte 8,5
!byte 19,34
!byte 9,17
!byte 1,29
!byte 13,31
!byte 14,35
!byte 12,12
!byte 5,38
!byte 2,19
!byte 16,9
!byte 23,36
!byte 11,18
!byte 18,20
!byte 8,10
!byte 3,37
!byte 17,18
!byte 17,30
!byte 14,19
!byte 22,9
!byte 5,25
!byte 3,27
!byte 11,11
!byte 21,5
!byte 12,33
!byte 4,28
!byte 1,14
!byte 0,7
!byte 15,35
!byte 23,17
!byte 13,20
!byte 16,26
!byte 7,13
!byte 19,6
!byte 9,3
!byte 20,1
!byte 12,16
!byte 5,8
!byte 2,4
!byte 0,34
!byte 23,31
!byte 14,13
!byte 22,38
!byte 20,25
!byte 12,6
!byte 5,35
!byte 18,17
!byte 11,36
!byte 5,18
!byte 7,26
!byte 17,22
!byte 21,30
!byte 22,29
!byte 12,39
!byte 13,14
!byte 6,7
!byte 18,35
!byte 6,22
!byte 2,11
!byte 16,37
!byte 4,31
!byte 17,15
!byte 6,26
!byte 2,13
!byte 16,38
!byte 5,31
!byte 14,11
!byte 22,37
!byte 12,25
!byte 21,12
!byte 10,6
!byte 4,35
!byte 11,28
!byte 2,23
!byte 16,11
!byte 23,37
!byte 22,20
!byte 10,10
!byte 4,37
!byte 19,28
!byte 4,23
!byte 17,11
!byte 13,17
!byte 4,26
!byte 1,13
!byte 16,6
!byte 7,35
!byte 19,17
!byte 12,20
!byte 5,10
!byte 2,5
!byte 16,34
!byte 1,31
!byte 14,31
!byte 22,15
!byte 6,27
!byte 18,13
!byte 12,30
!byte 5,15
!byte 18,7
!byte 6,30
!byte 2,15
!byte 16,39
!byte 6,31
!byte 18,15
!byte 14,30
!byte 6,15
!byte 18,39
!byte 14,22
!byte 6,11
!byte 18,37
!byte 11,25
!byte 10,22
!byte 4,11
!byte 17,37
!byte 11,9
!byte 21,4
!byte 10,2
!byte 4,33
!byte 3,28
!byte 0,23
!byte 15,11
!byte 23,5
!byte 13,1
!byte 22,0
!byte 10,32
!byte 1,24
!byte 14,12
!byte 6,38
!byte 16,25
!byte 23,12
!byte 11,6
!byte 5,3
!byte 18,1
!byte 0,30
!byte 15,7
!byte 23,3
!byte 14,0
!byte 6,32
!byte 0,24
!byte 15,1
!byte 23,0
!byte 11,0
!byte 5,0
!byte 2,0
!byte 0,32
!byte 14,38
!byte 18,25
!byte 11,38
!byte 5,19
!byte 11,26
!byte 18,22
!byte 8,11
!byte 19,37
!byte 4,29
!byte 17,14
!byte 8,7
!byte 19,35
!byte 2,29
!byte 16,14
!byte 7,39
!byte 19,19
!byte 13,10
!byte 6,5
!byte 18,34
!byte 19,24
!byte 4,22
!byte 1,11
!byte 16,5
!byte 23,34
!byte 11,17
!byte 10,20
!byte 4,10
!byte 1,37
!byte 16,18
!byte 7,9
!byte 19,4
!byte 9,2
!byte 4,1
!byte 17,32
!byte 8,16
!byte 3,8
!byte 1,4
!byte 0,2
!byte 15,16
!byte 3,20
!byte 0,21
!byte 15,10
!byte 7,5
!byte 19,2
!byte 9,1
!byte 20,0
!byte 9,32
!byte 4,16
!byte 1,8
!byte 0,4
!byte 7,20
!byte 1,21
!byte 9,31
!byte 22,27
!byte 12,14
!byte 5,39
!byte 18,19
!byte 13,18
!byte 8,26
!byte 3,13
!byte 17,6
!byte 8,3
!byte 19,33
!byte 0,29
!byte 15,14
!byte 7,7
!byte 19,3
!byte 13,32
!byte 6,16
!byte 2,8
!byte 0,36
!byte 14,25
!byte 22,12
!byte 10,38
!byte 17,25
!byte 11,15
!byte 21,7
!byte 6,28
!byte 2,14
!byte 0,39
!byte 18,31
!byte 14,26
!byte 6,13
!byte 18,38
!byte 19,25
!byte 12,22
!byte 5,11
!byte 18,5
!byte 4,30
!byte 1,15
!byte 16,7
!byte 23,35
!byte 14,20
!byte 6,10
!byte 2,37
!byte 7,25
!byte 9,22
!byte 11,29
!byte 10,23
!byte 20,11
!byte 13,9
!byte 22,4
!byte 10,34
!byte 17,24
!byte 23,30
!byte 21,23
!byte 10,27
!byte 20,13
!byte 12,19
!byte 21,9
!byte 12,34
!byte 8,28
!byte 3,14
!byte 1,7
!byte 16,3
!byte 23,33
!byte 6,20
!byte 2,10
!byte 0,37
!byte 17,31
!byte 14,15
!byte 22,39
!byte 14,6
!byte 6,35
!byte 11,12
!byte 5,6
!byte 2,3
!byte 16,33
!byte 0,31
!byte 15,15
!byte 23,7
!byte 14,32
!byte 2,24
!byte 0,12
!byte 23,20
!byte 5,21
!byte 19,26
!byte 20,22
!byte 9,11
!byte 20,5
!byte 12,17
!byte 21,8
!byte 10,4
!byte 4,34
!byte 7,28
!byte 1,23
!byte 10,31
!byte 20,15
!byte 14,34
!byte 18,24
!byte 8,12
!byte 3,38
!byte 1,19
!byte 8,31
!byte 19,15
!byte 14,8
!byte 6,36
!byte 0,25
!byte 15,12
!byte 7,6
!byte 3,3
!byte 17,1
!byte 11,32
!byte 5,16
!byte 15,22
!byte 19,21
!byte 12,21
!byte 21,10
!byte 10,5
!byte 20,34
!byte 9,28
!byte 23,29
!byte 13,23
!byte 13,13
!byte 22,6
!byte 10,35
!byte 16,29
!byte 23,14
!byte 11,7
!byte 21,3
!byte 2,28
!byte 0,14
!byte 15,19
!byte 6,21
!byte 18,10
!byte 8,37
!byte 9,30
!byte 14,23
!byte 22,11
!byte 13,25
!byte 4,27
!byte 17,13
!byte 11,35
!byte 21,17
!byte 5,26
!byte 7,27
!byte 12,29
!byte 21,14
!byte 10,7
!byte 20,35
!byte 13,28
!byte 16,27
!byte 23,13
!byte 13,3
!byte 22,1
!byte 5,24
!byte 23,22
!byte 21,21
!byte 21,26
!byte 9,27
!byte 21,29
!byte 21,27
!byte 13,27
!byte 12,27
!byte 21,13
!byte 12,35
!byte 12,28
!byte 5,14
!byte 2,7
!byte 16,35
!byte 2,31
!byte 16,15
!byte 23,39
!byte 14,10
!byte 6,37
!byte 8,25
!byte 19,12
!byte 9,6
!byte 4,3
!byte 17,33
!byte 11,8
!byte 5,4
!byte 2,2
!byte 0,33
!byte 15,31
!byte 14,37
!byte 10,25
!byte 20,12
!byte 9,38
!byte 4,19
!byte 17,9
!byte 11,34
!byte 5,17
!byte 3,26
!byte 16,22
!byte 7,11
!byte 19,5
!byte 12,1
!byte 21,32
!byte 10,16
!byte 4,8
!byte 1,36
!byte 0,18
!byte 15,4
!byte 7,2
!byte 3,1
!byte 17,0
!byte 8,0
!byte 3,32
!byte 1,16
!byte 22,25
!byte 12,38
!byte 11,14
!byte 5,7
!byte 18,3
!byte 2,30
!byte 0,15
!byte 15,39
!byte 23,19
!byte 18,26
!byte 8,13
!byte 19,38
!byte 9,19
!byte 5,29
!byte 19,27
!byte 13,11
!byte 22,5
!byte 21,24
!byte 1,27
!byte 12,31
!byte 21,15
!byte 14,28
!byte 6,14
!byte 2,39
!byte 23,25
!byte 13,22
!byte 11,13
!byte 21,6
!byte 10,3
!byte 20,33
!byte 5,28
!byte 15,27
!byte 22,21
!byte 12,37
!byte 20,28
!byte 9,14
!byte 4,7
!byte 17,35
!byte 13,4
!byte 6,2
!byte 2,33
!byte 7,24
!byte 1,22
!byte 20,31
!byte 14,36
!byte 2,25
!byte 16,12
!byte 7,38
!byte 3,19
!byte 11,10
!byte 5,5
!byte 18,2
!byte 8,33
!byte 1,30
!byte 22,31
!byte 14,14
!byte 6,39
!byte 13,6
!byte 6,3
!byte 18,33
!byte 11,24
!byte 2,22
!byte 0,11
!byte 15,37
!byte 23,18
!byte 21,20
!byte 17,26
!byte 14,7
!byte 22,35
!byte 13,12
!byte 6,6
!byte 2,35
!byte 23,24
!byte 5,22
!byte 23,26
!byte 21,22
!byte 20,29
!byte 12,7
!byte 21,35
!byte 13,36
!byte 6,18
!byte 2,9
!byte 16,36
!byte 3,31
!byte 14,33
!byte 10,24
!byte 4,12
!byte 1,38
!byte 0,19
!byte 15,9
!byte 23,4
!byte 11,2
!byte 5,1
!byte 18,0
!byte 8,32
!byte 15,23
!byte 14,21
!byte 22,10
!byte 10,37
!byte 9,25
!byte 17,29
!byte 13,15
!byte 22,7
!byte 2,27
!byte 16,13
!byte 23,38
!byte 11,19
!byte 12,10
!byte 5,37
!byte 18,18
!byte 8,9
!byte 19,36
!byte 9,18
!byte 3,29
!byte 8,23
!byte 19,11
!byte 13,33
!byte 22,16
!byte 10,8
!byte 4,36
!byte 15,28
!byte 3,23
!byte 13,5
!byte 22,2
!byte 10,33
!byte 9,24
!byte 15,29
!byte 11,23
!byte 13,37
!byte 22,18
!byte 10,9
!byte 20,36
!byte 17,28
!byte 22,23
!byte 22,28
!byte 10,14
!byte 4,39
!byte 6,23
!byte 18,11
!byte 10,30
!byte 4,15
!byte 17,39
!byte 14,2
!byte 6,33
!byte 8,24
!byte 3,12
!byte 1,6
!byte 0,3
!byte 15,33
!byte 23,16
!byte 5,20
!byte 15,26
!byte 19,22
!byte 20,21
!byte 12,5
!byte 21,34
!byte 10,17
!byte 20,8
!byte 9,36
!byte 4,18
!byte 1,9
!byte 16,4
!byte 7,34
!byte 3,17
!byte 8,20
!byte 3,10
!byte 1,5
!byte 16,2
!byte 7,33
!byte 19,16
!byte 4,20
!byte 1,10
!byte 0,5
!byte 15,34
!byte 7,17
!byte 9,20
!byte 7,29
!byte 9,23
!byte 13,29
!byte 20,27
!byte 13,35
!byte 22,17
!byte 12,36
!byte 16,28
!byte 7,14
!byte 3,7
!byte 17,3
!byte 13,16
!byte 0,26
!byte 15,6
!byte 7,3
!byte 19,1
!byte 12,0
!byte 5,32
!byte 2,16
!byte 0,8
!byte 15,20
!byte 3,21
!byte 8,21
!byte 19,10
!byte 9,5
!byte 20,2
!byte 9,33
!byte 20,16
!byte 9,8
!byte 4,4
!byte 1,34
!byte 0,17
!byte 15,8
!byte 7,4
!byte 3,2
!byte 1,1
!byte 16,0
!byte 7,32
!byte 3,16
!byte 0,20
!byte 15,2
!byte 7,1
!byte 19,0
!byte 9,0
!byte 4,0
!byte 1,32
!byte 0,16
!byte 15,0
!byte 7,0
!byte 3,0
!byte 1,0
!byte 255

View File

@ -5,12 +5,12 @@
!to "build/FX/BLOCK.MOSAIC",plain
*=$6000
coord = $FE
!source "src/fx/fx.hgr.block.fizzle.common.a"
lda #<@coords
sta coord
lda #>@coords
sta coord+1
+BUILD_BLOCK_FIZZLE_DATA
+LDADDR Coordinates
+ST16 coord
@whiteloop
ldy #0
lda (coord),y
@ -32,10 +32,8 @@ coord = $FE
inc coord+1
+ bne @whiteloop
@endwhite
lda #<@coords
sta coord
lda #>@coords
sta coord+1
+LDADDR Coordinates
+ST16 coord
@copyloop
ldy #0
lda (coord),y
@ -58,9 +56,6 @@ coord = $FE
+ bne @copyloop
@exit rts
@coords
!source "src/fx/fx.hgr.block.fizzle.data.a"
!source "src/wait.a"
!source "src/fx/fx.hgr.common.a"
+HGR_WHITE_ROUTINES

View File

@ -7,19 +7,18 @@
phase = $FC ; byte, $80 or $00
color = $FD ; byte
coord = $FE ; word
!source "src/fx/macros.a"
!source "src/fx/fx.hgr.block.fizzle.common.a"
+BUILD_BLOCK_FIZZLE_DATA
lda #$80
sta phase
@outerloop
lda #0
sta color
lda #<Coordinates
sta coord
lda #>Coordinates
sta coord+1
+LDADDR Coordinates
+ST16 coord
@loop
dec color
bpl +
@ -75,9 +74,6 @@ colors
!byte %11010101
!byte %11111111
Coordinates
!source "src/fx/fx.hgr.block.fizzle.data.a"
!source "src/wait.a"
!source "src/fx/fx.hgr.common.a"
+HGR_BLOCK_COPY_ROUTINES

View File

@ -7,17 +7,18 @@
phase = $FC ; byte, $80 or $00
maskindex = $FD ; byte
coord = $FE ; word
!source "src/fx/fx.hgr.block.fizzle.common.a"
+BUILD_BLOCK_FIZZLE_DATA
lda #$80
sta phase
lda #0
sta maskindex
@outerloop
lda #<Coordinates
sta coord
lda #>Coordinates
sta coord+1
+LDADDR Coordinates
+ST16 coord
@loop
dec maskindex
bpl +
@ -106,10 +107,6 @@ mask4
!byte %11111110
!byte %11111111
Coordinates
!source "src/fx/fx.hgr.block.fizzle.data.a"
!source "src/wait.a"
!source "src/fx/fx.hgr.common.a"
+HGR_COPY_MASK_ROUTINES