upgrade DHGR radial effects

This commit is contained in:
4am 2020-11-23 18:08:31 -05:00
parent 63870a0bc8
commit 56542020d0
15 changed files with 396 additions and 4115 deletions

View File

@ -23,17 +23,10 @@ DHGR.SLOWST.RIP
DHGR.RADIAL5
DHGR.FIZZLE
DHGR.IRIS.IN
DHGR.RADIALWH
DHGR.SWIRL
DHGR.R.BY.PIXEL
DHGR.SNOWFL.RIP
DHGR.STARWH
DHGR.CORNER4.IN
DHGR.RADIAL3WH
DHGR.RADIAL2WH
DHGR.FIZZLEWH
DHGR.RADIAL4WH
DHGR.RADIAL5WH
DHGR.FLICK
[eof]

View File

@ -1,78 +0,0 @@
;license:MIT
;(c) 2017-2020 by qkumba/4am/John Brooks
;
!cpu 6502
!to "build/FX/DHGR.FIZZLEWH",plain
*=$6000
addrs=$C0 ; [$40 bytes]
ldx #$1F ; build address lookup table
- txa
eor #$20
sta addrs, x
eor #$80
sta addrs+$20, x
dex
bpl -
ldx #(end-start) ; copy LFSR code to zero page
- lda start-1, x
sta $0, x
dex
bne -
txa
tay
clv
php
bit <knownrts ; set V flag
php
pha
pha
rts
start
!pseudopc 1 {
; in: X,Y=0
loop txa
loop1 eor #$35 ; LFSR form 0x3500 with period 16383
tax
loop2 lda addrs, x
bpl +
and #$7F
sta $C003
sta $C005
+ sta <dst+2
op ora #$FF ; SMC
sta <src+2
src ora $FD00, y ; SMC
dst sta $FD00, y
sta $C002
sta $C004
txa
lsr
tax
tya
ror
tay
bcc loop2
bne loop
bit $C000
bmi exit
txa
bne loop1
lda #$49
sta op
lda #$60
sta op + 1
lda #$B9
sta <src
plp
bvs loop
!byte $a9
exit plp
bvs exit
lda $4000 ; last lousy byte (because LFSR never hits 0)
sta $2000
knownrts rts
}
end

View File

@ -1,20 +1,141 @@
;license:MIT
;(c) 2018-2020 by 4am/qkumba
;(c) 2019-2020 by 4am/qkumba
;
!cpu 6502
!to "build/FX/DHGR.RADIAL",plain
*=$6000
!source "src/fx/fx.dhgr.precomputed.a"
mirror_src1 = $E8 ; word
mirror_dest1 = $EA ; word
mirror_src2 = $EC ; word
mirror_dest2 = $EE ; word
src1 = $F0 ; word
dest1 = $F2 ; word
src2 = $F4 ; word
dest2 = $F6 ; word
input = $FE ; word
+FX_INITONCE_DHGR CoordinatesFile, PostInit
!source "src/fx/fx.dhgr.precomputed.1bit.a"
+FX_INITONCE_1BIT CoordinatesFile, Start
lda #$80
sta Coordinates1Bit-2
Start
+BUILD_SPARSE_BITMASKS_DHGR copymasks, mirror_copymasks
+BUILD_HGR_LOOKUP_TABLES_X_IS_ALREADY_0 hgrlo, hgr1hi
+BUILD_HGR_MIRROR_LOOKUP_TABLES hgrlomirror, hgr1himirror
+BUILD_MIRROR_COLS mirror_cols
+COPY_SELF_TO_AUXMEM
PostInit
+FX_PRECOMPUTED_DHGR HGRHalfBlockCopy, Coordinates, $1
+LDADDR EndCoordinates1Bit-2
+ST16 input
LoopBL ; bottom-left quadrant (opposite row, original column, reverse input order)
ldy #0
lda (input),y
bmi DoneBL
tax
+ROW_X_TO_MIRROR_ADDRESSES
iny
lda (input),y
+HIGH_3_LOW_5 input
clc
- lda copymasks, x
beq +
+COPY_BIT mirror_src1, mirror_dest1, copymasks
+COPY_BIT mirror_src2, mirror_dest2, copymasks
+ bcs +
sta $C003
sta $C005
sec
bcs -
+ sta $C002
sta $C004
+DEC_INPUT_AND_LOOP LoopBL
DoneBL
+LDADDR Coordinates1Bit
+ST16 input
LoopTL ; top-left quadrant
ldy #0
lda (input),y
bmi DoneTL
tax
+ROW_X_TO_BASE_ADDRESSES
inc input
lda (input),y
+HIGH_3_LOW_5 input
clc
- lda copymasks, x
beq +
+COPY_BIT src1, dest1, copymasks
+COPY_BIT src2, dest2, copymasks
+ bcs +
sta $C003
sta $C005
sec
bcs -
+ sta $C002
sta $C004
+INC_INPUT_AND_LOOP LoopTL
DoneTL
+LDADDR EndCoordinates1Bit-2
+ST16 input
LoopTR ; top-right quadrant (same row, opposite column, reverse input order)
ldy #0
lda (input),y
bmi DoneTR
tax
+ROW_X_TO_BASE_ADDRESSES
iny
lda (input),y
+HIGH_3_LOW_5 input
lda mirror_cols,y
tay
clc
- lda mirror_copymasks, x
beq +
+COPY_BIT src1, dest1, mirror_copymasks
+COPY_BIT src2, dest2, mirror_copymasks
+ bcs +
sta $C003
sta $C005
sec
bcs -
+ sta $C002
sta $C004
+DEC_INPUT_AND_LOOP LoopTR
DoneTR
+LDADDR Coordinates1Bit
+ST16 input
LoopBR ; bottom-right quadrant (opposite row, opposite column, original input order)
ldy #0
lda (input),y
bmi DoneBR
tax
+ROW_X_TO_MIRROR_ADDRESSES
inc input
lda (input),y
+HIGH_3_LOW_5 input
lda mirror_cols,y
tay
clc
- lda mirror_copymasks, x
beq +
+COPY_BIT mirror_src1, mirror_dest1, mirror_copymasks
+COPY_BIT mirror_src2, mirror_dest2, mirror_copymasks
+ bcs +
sta $C003
sta $C005
sec
bcs -
+ sta $C002
sta $C004
+INC_INPUT_AND_LOOP LoopBR
DoneBR
rts
Coordinates=CoordinatesDHGR
CoordinatesFile
!byte 16
!text "FX/DHGR.RAD.DATA"
!byte 14
!text "FX/RADIAL.DATA"

View File

@ -0,0 +1,116 @@
mirror_src1 = $E8 ; word
mirror_dest1 = $EA ; word
mirror_src2 = $EC ; word
mirror_dest2 = $EE ; word
src1 = $F0 ; word
dest1 = $F2 ; word
src2 = $F4 ; word
dest2 = $F6 ; word
reverse_input = $FC ; word
input = $FE ; word
+BUILD_SPARSE_BITMASKS_DHGR copymasks, mirror_copymasks
+BUILD_HGR_LOOKUP_TABLES_X_IS_ALREADY_0 hgrlo, hgr1hi
+BUILD_HGR_MIRROR_LOOKUP_TABLES hgrlomirror, hgr1himirror
+BUILD_MIRROR_COLS mirror_cols
+COPY_SELF_TO_AUXMEM
+LDADDR Coordinates
+ST16 input
+LDADDR EndCoordinates-2
+ST16 reverse_input
jmp Loop
Exit rts
Loop ldy #0
lda (input),y
bmi Exit
tax
+ROW_X_TO_BASE_ADDRESSES
+ROW_X_TO_MIRROR_ADDRESSES
inc input
lda (input),y
+HIGH_3_LOW_5 input
; top-left quadrant (original row, original column, original input order)
clc
- lda copymasks, x
beq +
+COPY_BIT src1, dest1, copymasks
+COPY_BIT src2, dest2, copymasks
+ bcs +
sta $C003
sta $C005
sec
bcs -
+ sta $C002
sta $C004
; bottom-right quadrant (opposite row, opposite column, original input order)
lda mirror_cols,y
tay
clc
- lda mirror_copymasks, x
beq +
+COPY_BIT mirror_src1, mirror_dest1, mirror_copymasks
+COPY_BIT mirror_src2, mirror_dest2, mirror_copymasks
+ bcs +
sta $C003
sta $C005
sec
bcs -
+ sta $C002
sta $C004
ldy #0
lda (reverse_input),y
tax
+ROW_X_TO_BASE_ADDRESSES
+ROW_X_TO_MIRROR_ADDRESSES
iny
lda (reverse_input),y
+HIGH_3_LOW_5 reverse_input
; bottom-left quadrant (opposite row, original column, reverse input order)
clc
- lda copymasks, x
beq +
+COPY_BIT mirror_src1, mirror_dest1, copymasks
+COPY_BIT mirror_src2, mirror_dest2, copymasks
+ bcs +
sta $C003
sta $C005
sec
bcs -
+ sta $C002
sta $C004
; top-right quadrant (same row, opposite column, reverse input order)
lda mirror_cols,y
tay
clc
- lda mirror_copymasks, x
beq +
+COPY_BIT src1, dest1, mirror_copymasks
+COPY_BIT src2, dest2, mirror_copymasks
+ bcs +
sta $C003
sta $C005
sec
bcs -
+ sta $C002
sta $C004
inc input
bne +
inc input+1
+ lda reverse_input
beq +
dec reverse_input
dec reverse_input
jmp Loop
+ dec reverse_input
dec reverse_input
dec reverse_input+1
bit $c000
bmi +
jmp Loop
+ rts

File diff suppressed because it is too large Load Diff

View File

@ -1,21 +0,0 @@
;license:MIT
;(c) 2018-2020 by 4am/qkumba
;
!cpu 6502
!to "build/FX/DHGR.RADIALWH",plain
*=$6000
!source "src/fx/fx.dhgr.precomputed.a"
+FX_INITONCE_DHGR CoordinatesFile, PostInit
+COPY_SELF_TO_AUXMEM
PostInit
+FX_PRECOMPUTED_DHGR HGRHalfBlockToWhite, Coordinates, $0
+FX_PRECOMPUTED_DHGR HGRHalfBlockCopy, Coordinates, $1
rts
Coordinates=CoordinatesDHGR
CoordinatesFile
!byte 16
!text "FX/DHGR.RAD.DATA"

View File

@ -1,21 +1,20 @@
;license:MIT
;(c) 2018-2020 by 4am/qkumba
;(c) 2019-2020 by 4am/qkumba
;
!cpu 6502
!to "build/FX/DHGR.RADIAL2",plain
*=$6000
!source "src/fx/fx.dhgr.precomputed.a"
!source "src/fx/fx.dhgr.precomputed.1bit.a"
+FX_INITONCE_DHGR CoordinatesFile, PostInit
+FX_RADIAL2_DHGR Coordinates
+COPY_SELF_TO_AUXMEM
PostInit
+FX_PRECOMPUTED_DHGR HGRHalfBlockCopy, Coordinates, $1
+FX_INITONCE_1BIT CoordinatesFile, Start
+FX_RIPPLE_1BIT aslmod
rts
Start
!source "src/fx/fx.dhgr.radial.common.a"
Coordinates=CoordinatesDHGR
CoordinatesFile
!byte 16
!text "FX/DHGR.RAD.DATA"
!byte 14
!text "FX/RADIAL.DATA"
Coordinates=Coordinates1Bit
EndCoordinates=EndCoordinates1Bit

View File

@ -1,22 +0,0 @@
;license:MIT
;(c) 2018-2020 by 4am/qkumba
;
!cpu 6502
!to "build/FX/DHGR.RADIAL2WH",plain
*=$6000
!source "src/fx/fx.dhgr.precomputed.a"
+FX_INITONCE_DHGR CoordinatesFile, PostInit
+FX_RADIAL2_DHGR Coordinates
+COPY_SELF_TO_AUXMEM
PostInit
+FX_PRECOMPUTED_DHGR HGRHalfBlockToWhite, Coordinates, $0
+FX_PRECOMPUTED_DHGR HGRHalfBlockCopy, Coordinates, $0
rts
Coordinates=CoordinatesDHGR
CoordinatesFile
!byte 16
!text "FX/DHGR.RAD.DATA"

View File

@ -1,21 +1,132 @@
;license:MIT
;(c) 2018-2020 by 4am/qkumba
;(c) 2019-2020 by 4am/qkumba
;
!cpu 6502
!to "build/FX/DHGR.RADIAL3",plain
*=$6000
!source "src/fx/fx.dhgr.precomputed.a"
mirror_src1 = $E8 ; word
mirror_dest1 = $EA ; word
mirror_src2 = $EC ; word
mirror_dest2 = $EE ; word
src1 = $F0 ; word
dest1 = $F2 ; word
src2 = $F4 ; word
dest2 = $F6 ; word
reverse_input = $FC ; word
input = $FE ; word
+FX_INITONCE_DHGR CoordinatesFile, PostInit
+FX_RADIAL3_DHGR Coordinates
!source "src/fx/fx.dhgr.precomputed.1bit.a"
+FX_INITONCE_1BIT CoordinatesFile, Start
Start
+BUILD_SPARSE_BITMASKS_DHGR copymasks, mirror_copymasks
+BUILD_HGR_LOOKUP_TABLES_X_IS_ALREADY_0 hgrlo, hgr1hi
+BUILD_HGR_MIRROR_LOOKUP_TABLES hgrlomirror, hgr1himirror
+BUILD_MIRROR_COLS mirror_cols
+COPY_SELF_TO_AUXMEM
PostInit
+FX_PRECOMPUTED_DHGR HGRHalfBlockCopy, Coordinates, $1
+LDADDR Coordinates1Bit
+ST16 input
+LDADDR EndCoordinates1Bit-2
+ST16 reverse_input
+HIDE_NEXT_BYTE
Exit rts
Loop ldy #0
lda (input),y
bmi Exit
tax
+ROW_X_TO_BASE_ADDRESSES
+ROW_X_TO_MIRROR_ADDRESSES
inc input
lda (input),y
+HIGH_3_LOW_5 input
rts
; top-left quadrant (original row, original column, original input order)
clc
- lda copymasks, x
beq +
+COPY_BIT src1, dest1, copymasks
+COPY_BIT src2, dest2, copymasks
+ bcs +
sta $C003
sta $C005
sec
bcs -
+ sta $C002
sta $C004
; bottom-right quadrant (opposite row, opposite column, original input order)
lda mirror_cols,y
tay
clc
- lda mirror_copymasks, x
beq +
+COPY_BIT mirror_src1, mirror_dest1, mirror_copymasks
+COPY_BIT mirror_src2, mirror_dest2, mirror_copymasks
+ bcs +
sta $C003
sta $C005
sec
bcs -
+ sta $C002
sta $C004
ldy #0
lda (reverse_input),y
tax
+ROW_X_TO_BASE_ADDRESSES
+ROW_X_TO_MIRROR_ADDRESSES
iny
lda (reverse_input),y
+HIGH_3_LOW_5 reverse_input
; bottom-left quadrant (opposite row, original column, reverse input order)
clc
- lda copymasks, x
beq +
+COPY_BIT mirror_src1, mirror_dest1, copymasks
+COPY_BIT mirror_src2, mirror_dest2, copymasks
+ bcs +
sta $C003
sta $C005
sec
bcs -
+ sta $C002
sta $C004
; top-right quadrant (same row, opposite column, reverse input order)
lda mirror_cols,y
tay
clc
- lda mirror_copymasks, x
beq +
+COPY_BIT src1, dest1, mirror_copymasks
+COPY_BIT src2, dest2, mirror_copymasks
+ bcs +
sta $C003
sta $C005
sec
bcs -
+ sta $C002
sta $C004
inc input
bne +
inc input+1
+ lda reverse_input
beq +
dec reverse_input
dec reverse_input
jmp Loop
+ dec reverse_input
dec reverse_input
dec reverse_input+1
bit $c000
bmi +
jmp Loop
+ rts
Coordinates=CoordinatesDHGR
CoordinatesFile
!byte 16
!text "FX/DHGR.RAD.DATA"
!byte 14
!text "FX/RADIAL.DATA"

View File

@ -1,22 +0,0 @@
;license:MIT
;(c) 2018-2020 by 4am/qkumba
;
!cpu 6502
!to "build/FX/DHGR.RADIAL3WH",plain
*=$6000
!source "src/fx/fx.dhgr.precomputed.a"
+FX_INITONCE_DHGR CoordinatesFile, PostInit
+FX_RADIAL3_DHGR Coordinates
+COPY_SELF_TO_AUXMEM
PostInit
+FX_PRECOMPUTED_DHGR HGRHalfBlockToWhite, Coordinates, $0
+FX_PRECOMPUTED_DHGR HGRHalfBlockCopy, Coordinates, $0
rts
Coordinates=CoordinatesDHGR
CoordinatesFile
!byte 16
!text "FX/DHGR.RAD.DATA"

View File

@ -1,21 +1,20 @@
;license:MIT
;(c) 2018-2020 by 4am/qkumba
;(c) 2019-2020 by 4am/qkumba
;
!cpu 6502
!to "build/FX/DHGR.RADIAL4",plain
*=$6000
!source "src/fx/fx.dhgr.precomputed.a"
!source "src/fx/fx.dhgr.precomputed.1bit.a"
+FX_INITONCE_DHGR CoordinatesFile, PostInit
+FX_RADIAL4_DHGR Coordinates
+COPY_SELF_TO_AUXMEM
PostInit
+FX_PRECOMPUTED_DHGR HGRHalfBlockCopy, Coordinates, $1
+FX_INITONCE_1BIT CoordinatesFile, Start
jsr EndCoordinates1Bit+1
rts
Start
!source "src/fx/fx.dhgr.radial.common.a"
Coordinates=CoordinatesDHGR
CoordinatesFile
!byte 16
!text "FX/DHGR.RAD.DATA"
!byte 14
!text "FX/RADIAL.DATA"
Coordinates=Coordinates1Bit
EndCoordinates=EndCoordinates1Bit

View File

@ -1,21 +0,0 @@
;license:MIT
;(c) 2018-2020 by 4am/qkumba
;
!cpu 6502
!to "build/FX/DHGR.RADIAL4WH",plain
*=$6000
!source "src/fx/fx.dhgr.precomputed.a"
+FX_INITONCE_DHGR CoordinatesFile, PostInit
+COPY_SELF_TO_AUXMEM
PostInit
+FX_PRECOMPUTED_DHGR HGRHalfBlockToWhite, Coordinates, $0
+FX_PRECOMPUTED_DHGR HGRHalfBlockCopy, Coordinates, $0
rts
Coordinates=CoordinatesDHGR
CoordinatesFile
!byte 17
!text "FX/DHGR.RAD4.DATA"

View File

@ -1,21 +1,20 @@
;license:MIT
;(c) 2018-2020 by 4am/qkumba
;(c) 2019-2020 by 4am/qkumba
;
!cpu 6502
!to "build/FX/DHGR.RADIAL5",plain
*=$6000
!source "src/fx/fx.dhgr.precomputed.a"
!source "src/fx/fx.dhgr.precomputed.1bit.a"
+FX_INITONCE_DHGR CoordinatesFile, PostInit
+FX_RADIAL5_DHGR Coordinates
+COPY_SELF_TO_AUXMEM
PostInit
+FX_PRECOMPUTED_DHGR HGRHalfBlockCopy, Coordinates, $1
+FX_INITONCE_1BIT CoordinatesFile, Start
+FX_RIPPLE_1BIT aslmod3
rts
Start
!source "src/fx/fx.dhgr.radial.common.a"
Coordinates=CoordinatesDHGR
CoordinatesFile
!byte 16
!text "FX/DHGR.RAD.DATA"
!byte 14
!text "FX/RADIAL.DATA"
Coordinates=Coordinates1Bit
EndCoordinates=EndCoordinates1Bit

View File

@ -1,22 +0,0 @@
;license:MIT
;(c) 2018-2020 by 4am/qkumba
;
!cpu 6502
!to "build/FX/DHGR.RADIAL5WH",plain
*=$6000
!source "src/fx/fx.dhgr.precomputed.a"
+FX_INITONCE_DHGR CoordinatesFile, PostInit
+FX_RADIAL5_DHGR Coordinates
+COPY_SELF_TO_AUXMEM
PostInit
+FX_PRECOMPUTED_DHGR HGRHalfBlockToWhite, Coordinates, $0
+FX_PRECOMPUTED_DHGR HGRHalfBlockCopy, Coordinates, $0
rts
Coordinates=CoordinatesDHGR
CoordinatesFile
!byte 16
!text "FX/DHGR.RAD.DATA"

View File

@ -1,23 +0,0 @@
;license:MIT
;(c) 2018-2020 by 4am/qkumba
;
!cpu 6502
!to "build/FX/DHGR.STARWH",plain
*=$6000
!source "src/fx/fx.dhgr.precomputed.a"
+FX_INITONCE_DHGR CoordinatesFile, PostInit
lda #$80
sta EndCoordinatesDHGR
+COPY_SELF_TO_AUXMEM
PostInit
+FX_PRECOMPUTED_DHGR HGRHalfBlockToWhite, Coordinates, $0
+FX_PRECOMPUTED_DHGR HGRHalfBlockCopy, Coordinates, $0
rts
Coordinates=CoordinatesDHGR
CoordinatesFile
!byte 17
!text "FX/DHGR.STAR.DATA"