table1,left byte in sprite

..AABBCC

uses bits AABB

value of byte n =  spritecolor (%01) * ((byte&$20)*2 + (byte&$10)*1 + (byte&$8)/2 + (byte&$4)/4)

<WVL_KsZeN> lax (letterdata),y
<WVL_KsZeN> lda table1,x
<WVL_KsZeN> sta (spriteimage),y
<WVL_KsZeN> lda table2,x
<WVL_KsZeN> iny
<WVL_KsZeN> sta (spriteimage),y
<WVL_KsZeN> iny
<WVL_KsZeN> iny
<WVL_KsZeN> lax (letterdata),y
<WVL_KsZeN> lda table1,x
<WVL_KsZeN> etc
<WVL_KsZeN> each letter is 21 bytes of data
<WVL_KsZeN> we only use the 6 lsb bits
<WVL_KsZeN> ..XXXXXX
<WVL_KsZeN> bit is 1 if it is lit (yellow), 0 if it is off (brown)
<WVL_KsZeN> now, to make rendering easypeasy, we want to use ,y for both reading and writing
<JackAsser> yes
<WVL_KsZeN> so we have to put the 21 bytes 2 bytes apart
<WVL_KsZeN> .byte firstbyteofletter0, firstbyteofletter1, firstbyteofletter2
<WVL_KsZeN> .byte 2ndbyteofletter0, 2ndbyteofletter1, 
<WVL_KsZeN> .byte 3rdbyteofletter0, 3rdbyteofletter1, 3rdbyteofletter2
<JackAsser> yeah ok, so that we interleave 3 letters in each 63 byte chunk?

ldy #0
loop:
lax (letter1),y          ;5
lda table1,x             ;4   
sta (spriteimage),y      ;6
lda table2,x             ;4
sta selfmod              ;4

lax (letter2),y          ;5
iny                      ;2
lda table3,x             ;4
selfmod: ora #$00        ;2
sta (spriteimage),y      ;6
iny                      ;2
lda table4,x             ;4
sta (spritimage),y       ;6
iny                      ;2

cpy #63                  ;2
bne loop                 ;3

61*21 = 1281 cycles

