4cade/src/fx/fx.hgr.r.by.2.a

109 lines
1.8 KiB
Plaintext

;license:MIT
;(c) 2019 by 4am
;
!cpu 6502
!to "build/FX.INDEXED/R.BY.2",plain
*=$6000
maskindex = $fd
row = $fe
col = $ff
!source "src/fx/macros.a"
!source "src/constants.a"
lda #0
sta col
ColLoop
lda #0
sta row
jsr WaitForVBL
RowLoop
lda row
+HGR_ROW_CALC
lda col
ror
bcs OddCol
ldx #7
ldy col
- lda ($26),y
eor ($3c),y
and copymask_even
eor ($26),y
sta ($26),y
clc
+HGR_INC_WITHIN_BLOCK
dex
bpl -
bmi NextRow ; always branches
OddCol
ldx #7
ldy col
- lda ($26),y
eor ($3c),y
and copymask_odd
eor ($26),y
sta ($26),y
clc
+HGR_INC_WITHIN_BLOCK
dex
bpl -
NextRow
inc row
lda row
cmp #24
+LBNE RowLoop
lda $c000
bmi Exit
inc col
lda col
cmp #40
+LBNE ColLoop
beq Phase2
Exit jmp UnwaitForVBL
Phase2
lda #0
sta col
ColLoop2
lda #0
sta row
jsr WaitForVBL
RowLoop2
lda row
+HGR_ROW_CALC
ldx #7
ldy col
- lda ($3c),y
sta ($26),y
clc
+HGR_INC_WITHIN_BLOCK
dex
bpl -
inc row
lda row
cmp #24
+LBNE RowLoop2
lda $c000
bmi Exit2
inc col
lda col
cmp #40
+LBNE ColLoop2
Exit2 jmp UnwaitForVBL
copymask_even
!byte %11001100
copymask_odd
!byte %10110011
!source "src/wait.a"