diff --git a/res/DFX.CONF b/res/DFX.CONF index fc1aebcaf..17fec0723 100644 --- a/res/DFX.CONF +++ b/res/DFX.CONF @@ -4,8 +4,9 @@ DHGR.DIAGONAL DHGR.RADIAL DHGR.REDLINES DHGR.RADIAL4 -DHGR.BAR.DISSLV +DHGR.SOFT.DIAG DHGR.STAR +DHGR.BAR.DISSLV DHGR.RADIAL3 DHGR.TWOPASS.LR DHGR.RADIAL2 diff --git a/src/fx/fx.dhgr.soft.diagonal.a b/src/fx/fx.dhgr.soft.diagonal.a new file mode 100644 index 000000000..e7c54ff06 --- /dev/null +++ b/src/fx/fx.dhgr.soft.diagonal.a @@ -0,0 +1,300 @@ +;license:MIT +;(c) 2019-2020 by 4am +; +!cpu 6502 +!to "build/FX/DHGR.SOFT.DIAG",plain +*=$6000 + +pass = $fb +y = $fc +row = $fd +col = $fe +counter = $ff + +hgrlo = $0200 ; [$C0 bytes, main memory only] +hgr1hi = $0300 ; [$C0 bytes, main memory only] + +!macro RESET_HGR_CALC_BY_7 { + lda $27 + sec + sbc #$1c + sta $27 + eor #$60 + sta $3d +} + + !source "src/fx/macros.a" + !source "src/fx/fx.dhgr.common.a" + + +COPY_SELF_TO_AUXMEM + + sta $C005 + ldx #48 +- lda copymasks1_aux-1, x + sta copymasks1-1, x + dex + bne - + sta $C004 + + +BUILD_HGR_LOOKUP_TABLES_X_IS_ALREADY_0 hgrlo, hgr1hi + + lda #(40+24+7-1) ; columns + rows + blocks per row - 1 + sta counter + + lda #39 + sta col +ColLoop + lda #23 + sta row + ldy col + sty y +RowLoop + lda row + asl + asl + asl + tax + lda hgrlo, x + sta $26 + sta $3c + lda hgr1hi, x + sta $27 + eor #$60 + sta $3d + + lda #2 + sta pass +PassLoop + ldy y + +IS_Y_OFFSCREEN + +LBCS @block2 + + ldx #7 + clc +!for i, 0, 7 { + +COPY_BIT $3c, $26, copymasks1 +!if i < 7 { + dex + +HGR_INC_WITHIN_BLOCK +} +} + +RESET_HGR_CALC_BY_7 +@block2 + iny + +IS_Y_OFFSCREEN + +LBCS @block3 + + ldx #7 + clc +!for i, 0, 7 { + +COPY_BIT $3c, $26, copymasks2 +!if i < 7 { + dex + +HGR_INC_WITHIN_BLOCK +} +} + +RESET_HGR_CALC_BY_7 +@block3 + iny + +IS_Y_OFFSCREEN + +LBCS @block4 + + ldx #7 + clc +!for i, 0, 7 { + +COPY_BIT $3c, $26, copymasks3 +!if i < 7 { + dex + +HGR_INC_WITHIN_BLOCK +} +} + +RESET_HGR_CALC_BY_7 +@block4 + iny + +IS_Y_OFFSCREEN + +LBCS @block5 + + ldx #7 + clc +!for i, 0, 7 { + +COPY_BIT $3c, $26, copymasks4 +!if i < 7 { + dex + +HGR_INC_WITHIN_BLOCK +} +} + +RESET_HGR_CALC_BY_7 +@block5 + iny + +IS_Y_OFFSCREEN + +LBCS @block6 + + ldx #7 + clc +!for i, 0, 7 { + +COPY_BIT $3c, $26, copymasks5 +!if i < 7 { + dex + +HGR_INC_WITHIN_BLOCK +} +} + +RESET_HGR_CALC_BY_7 +@block6 + iny + +IS_Y_OFFSCREEN + +LBCS @block7 + + ldx #7 + clc +!for i, 0, 7 { + +COPY_BIT $3c, $26, copymasks6 +!if i < 7 { + dex + +HGR_INC_WITHIN_BLOCK +} +} + +RESET_HGR_CALC_BY_7 +@block7 + iny + +IS_Y_OFFSCREEN + +LBCS @nextrow + + clc +!for i, 0, 7 { + lda ($3c),y + sta ($26),y +!if i < 7 { + +HGR_INC_WITHIN_BLOCK +} +} + +RESET_HGR_CALC_BY_7 +@nextrow + sta $C003 + sta $C005 + dec pass + +LBNE PassLoop + sta $C002 + sta $C004 + ldy y + iny + sty y + dec row + +LBPL RowLoop + lda $c000 + bmi @exit + dec col + dec counter + +LBNE ColLoop +@exit rts + +;1GFEDCBA -> +;1GGFFEED (main) + +;1DCCBBAA (aux) +copymasks1 + !byte %00000000 + !byte %00000000 + !byte %00000000 + !byte %10000001 + !byte %10000001 + !byte %00000000 + !byte %00000000 + !byte %00000000 +copymasks2 + !byte %00000000 + !byte %00000000 + !byte %10000110 + !byte %10000001 + !byte %10000001 + !byte %10010110 + !byte %00000000 + !byte %00000000 +copymasks3 + !byte %00000000 + !byte %00000000 + !byte %10000111 + !byte %10000111 + !byte %10000111 + !byte %10000111 + !byte %10000000 + !byte %10000000 +copymasks4 + !byte %00000000 + !byte %10011001 + !byte %10000001 + !byte %10011111 + !byte %10000111 + !byte %10000111 + !byte %10011001 + !byte %00000000 +copymasks5 + !byte %00000000 + !byte %10011111 + !byte %10011111 + !byte %10011111 + !byte %10011111 + !byte %10011111 + !byte %10011111 + !byte %00000000 +copymasks6 + !byte %11100110 + !byte %10011111 + !byte %11111111 + !byte %10011111 + !byte %11111111 + !byte %10011111 + !byte %10011111 + !byte %11100110 +copymasks1_aux + !byte %00000000 + !byte %00000000 + !byte %00000000 + !byte %11000000 + !byte %11000000 + !byte %00000000 + !byte %00000000 + !byte %00000000 +copymasks2_aux + !byte %00000000 + !byte %00000000 + !byte %10110000 + !byte %11000000 + !byte %11000000 + !byte %10110000 + !byte %00000000 + !byte %00000000 +copymasks3_aux + !byte %00000000 + !byte %00000000 + !byte %11110000 + !byte %11110000 + !byte %11110000 + !byte %11110000 + !byte %00000000 + !byte %00000000 +copymasks4_aux + !byte %00000000 + !byte %11001100 + !byte %11110000 + !byte %11111100 + !byte %11110000 + !byte %11110000 + !byte %11001100 + !byte %00000000 +copymasks5_aux + !byte %00000000 + !byte %11111100 + !byte %11111100 + !byte %11111100 + !byte %11111100 + !byte %11111100 + !byte %11111100 + !byte %00000000 +copymasks6_aux + !byte %10110011 + !byte %11111100 + !byte %11111111 + !byte %11111100 + !byte %11111111 + !byte %11111100 + !byte %11111100 + !byte %10110011 diff --git a/src/fx/fx.hgr.soft.diagonal.a b/src/fx/fx.hgr.soft.diagonal.a index bf08f1366..3471bee5d 100644 --- a/src/fx/fx.hgr.soft.diagonal.a +++ b/src/fx/fx.hgr.soft.diagonal.a @@ -224,5 +224,3 @@ copymasks6 !byte %10111110 !byte %10111110 !byte %11010101 - - !source "src/fx/fx.hgr.common.a"