;license:MIT ;(c) 2019-2020 by 4am/qkumba ; !cpu 6502 !to "build/FX.INDEXED/DHGR.RADIAL",plain *=$6000 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 !source "src/fx/fx.dhgr.precomputed.1bit.a" +FX_INITONCE_1BIT CoordinatesFile, Start lda #$80 sta Coordinates1Bit-2 Start jsr iBuildDHGRSparseBitmasks1Bit jsr iBuildHGRTables jsr iBuildHGRMirrorTables jsr iBuildDHGRMirrorCols +COPY_TO_AUXMEM $60, 4 +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 mirror_src1, mirror_src2, mirror_dest1, mirror_dest2 iny lda (input),y +HIGH_3_LOW_5 input clc - lda copymasks1bit, x beq + +COPY_BIT mirror_src1, mirror_dest1, copymasks1bit +COPY_BIT mirror_src2, mirror_dest2, copymasks1bit + bcs + sta READAUXMEM sta WRITEAUXMEM sec bcs - + sta READMAINMEM sta WRITEMAINMEM +DEC_INPUT_AND_LOOP input, LoopBL DoneBL +LDADDR Coordinates1Bit +ST16 input LoopTL ; top-left quadrant ldy #0 lda (input),y bmi DoneTL tax +ROW_X_TO_BASE_ADDRESSES src1, src2, dest1, dest2 inc input lda (input),y +HIGH_3_LOW_5 input clc - lda copymasks1bit, x beq + +COPY_BIT src1, dest1, copymasks1bit +COPY_BIT src2, dest2, copymasks1bit + bcs + sta READAUXMEM sta WRITEAUXMEM sec bcs - + sta READMAINMEM sta WRITEMAINMEM +INC_INPUT_AND_LOOP input, 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 src1, src2, dest1, dest2 iny lda (input),y +HIGH_3_LOW_5 input lda mirror_cols,y tay clc - lda mirror_copymasks1bit, x beq + +COPY_BIT src1, dest1, mirror_copymasks1bit +COPY_BIT src2, dest2, mirror_copymasks1bit + bcs + sta READAUXMEM sta WRITEAUXMEM sec bcs - + sta READMAINMEM sta WRITEMAINMEM +DEC_INPUT_AND_LOOP input, 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 mirror_src1, mirror_src2, mirror_dest1, mirror_dest2 inc input lda (input),y +HIGH_3_LOW_5 input lda mirror_cols,y tay clc - lda mirror_copymasks1bit, x beq + +COPY_BIT mirror_src1, mirror_dest1, mirror_copymasks1bit +COPY_BIT mirror_src2, mirror_dest2, mirror_copymasks1bit + bcs + sta READAUXMEM sta WRITEAUXMEM sec bcs - + sta READMAINMEM sta WRITEMAINMEM +INC_INPUT_AND_LOOP input, LoopBR DoneBR rts CoordinatesFile +PSTRING "RADIAL.DATA"