org $800
+LARGE = 0
+
REG_NEWVID = $c029
FB_BASE = $e12000
rep #$30 ; accum/index 16bit
lda #$0000
ldx #$0000
-fillrest
+fillrest ; @30f
stal $e19d00,x
inx
inx
- cpx #$300
+ cpx #$100
bne fillrest
lda #$0000
-cmap pha
+cmap pha ; @31d
sta 0
asl
tax ; offset = i * 2
stal $e19e00,x
pla
inc
- cmp #$000f
+ cmp #$0010
bne cmap
YVAL = 0
-COLIDX = 1
+TMPVAL = 1
+YNIB = 2
- sep #$20 ; accum 8bit
- ldx #0 ; fb index
+ sep #$20 ; accum 8bit @337
+ ldx #0000 ; fb index
stz YVAL
-yloop lda YVAL
- and #$f
- sta COLIDX
+yloop ldy #0000 ; column/2 on Y reg @33e
+xloop lda YVAL ; @341
+
+ DO LARGE
+ lsr
+ FIN
+
+ and #$0f
+ sta YNIB
+ tya
+
+ DO LARGE = 0
asl
+ inc ; increment X, next pixel on low nibble
+ FIN
+
+ and #$0f
+ sta TMPVAL ; save first pixel X coordinate
+
+ DO LARGE = 0
+ dec ; decrement back for high nibble pixel
+ FIN
+
+ eor YNIB
+ asl ; move next pixel value to high nibble
asl
asl
asl
- ora COLIDX
- ldy #160 ; 160 bytes across
-xloop stal FB_BASE,x
+ ora TMPVAL ; first pixel X -> low nibble
+ eor YNIB
+
+ stal FB_BASE, x ; write the pixel pair
inx
- dey
+ iny
+ cpy #160
bne xloop
inc YVAL
lda YVAL
cmp #200
bne yloop
-infloop bra infloop
+infloop bra infloop ; @36d
; vi:ft=asm_ca65