2018-12-29 18:43:59 +00:00
|
|
|
;license:MIT
|
2020-11-23 23:08:31 +00:00
|
|
|
;(c) 2019-2020 by 4am/qkumba
|
2018-12-29 18:43:59 +00:00
|
|
|
;
|
2018-11-07 02:18:13 +00:00
|
|
|
!cpu 6502
|
|
|
|
!to "build/FX/DHGR.RADIAL",plain
|
|
|
|
*=$6000
|
|
|
|
|
2020-11-23 23:08:31 +00:00
|
|
|
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
|
2018-11-07 02:18:13 +00:00
|
|
|
|
2020-11-23 23:08:31 +00:00
|
|
|
!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
|
2020-11-18 02:11:05 +00:00
|
|
|
+COPY_SELF_TO_AUXMEM
|
2020-11-23 23:08:31 +00:00
|
|
|
+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
|
2018-11-07 02:18:13 +00:00
|
|
|
|
2020-11-23 23:08:31 +00:00
|
|
|
+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
|
2019-06-24 18:54:49 +00:00
|
|
|
rts
|
|
|
|
|
2020-11-18 02:11:05 +00:00
|
|
|
CoordinatesFile
|
2020-11-23 23:08:31 +00:00
|
|
|
!byte 14
|
|
|
|
!text "FX/RADIAL.DATA"
|