From 8bca6fb35443e72d1a8bc843687b2462547c3a0a Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Wed, 23 Aug 2023 21:36:11 -0400 Subject: [PATCH] hgr_font: modify to work with vmw-style strings --- .../hgr/hgr_font_4am/font_vmw_condensed.s | 179 ++++ .../hgr_font_4am/font_vmw_condensed_data.s | 994 ++++++++++++++++++ 2 files changed, 1173 insertions(+) create mode 100644 graphics/hgr/hgr_font_4am/font_vmw_condensed.s create mode 100644 graphics/hgr/hgr_font_4am/font_vmw_condensed_data.s diff --git a/graphics/hgr/hgr_font_4am/font_vmw_condensed.s b/graphics/hgr/hgr_font_4am/font_vmw_condensed.s new file mode 100644 index 00000000..6eebc529 --- /dev/null +++ b/graphics/hgr/hgr_font_4am/font_vmw_condensed.s @@ -0,0 +1,179 @@ +;license:MIT +;(c) 2023 by 4am +; +; drawing routines for Million Perfect Tiles Condensed +; +; Public functions: +; - DrawCondensedString +; + +; VMW: commented, reformatted, minor changes, ca65 assembly + +string_ptr = $FC ; word (used by DrawLargeString) + +;------------------------------------------------------------------------------ +; DrawCondensedString +; +; in: A/Y points to zero terminated string, with x-pos and y-pos at start +; out: clobbers all registers & flags +;------------------------------------------------------------------------------ +DrawCondensedString: + + ; store the string location + + sta string_ptr + sty string_ptr+1 + + ldy #0 + lda (string_ptr), Y ; get xpos + sta CH ; save the X column offset + iny + + lda (string_ptr),Y ; get ypos + tay + + ; add two to string pointer + clc + lda string_ptr + adc #2 + sta dcb_loop+1 + lda #0 + adc string_ptr+1 + sta dcb_loop+2 + + ; row0 + + lda hposn_low, Y ; get low memory offset + clc + adc CH ; add in x-coord + sta dcb_row0+4 + lda hposn_high, Y ; get high memory offset + sta dcb_row0+5 ; save it out + iny ; go to next row + + ; row1 + + lda hposn_low, Y + adc CH + sta dcb_row1+4 + lda hposn_high, Y + sta dcb_row1+5 + iny + + ; row2 + + lda hposn_low, Y + adc CH + sta dcb_row2+4 + lda hposn_high, Y + sta dcb_row2+5 + iny + + ; row3 + + lda hposn_low, Y + adc CH + sta dcb_row3+4 + lda hposn_high, Y + sta dcb_row3+5 + iny + + ; row4 + + lda hposn_low, Y + adc CH + sta dcb_row4+4 + lda hposn_high, Y + sta dcb_row4+5 + iny + + ; row5 + + lda hposn_low, Y + adc CH + sta dcb_row5+4 + lda hposn_high, Y + sta dcb_row5+5 + iny + + ; row6 + + lda hposn_low, Y + adc CH + sta dcb_row6+4 + lda hposn_high, Y + sta dcb_row6+5 + iny + + ; row7 + + lda hposn_low, Y + adc CH + sta dcb_row7+4 + lda hposn_high, Y + sta dcb_row7+5 + iny + + ; row8 + + lda hposn_low, Y + adc CH + sta dcb_row8+4 + lda hposn_high, Y + sta dcb_row8+5 + iny + + ; row9 + + lda hposn_low, Y + adc CH + sta dcb_row9+4 + lda hposn_high, Y + sta dcb_row9+5 + + ldx #0 +dcb_loop: +dcb_loop_smc: + ldy $FDFD, X ; load next char into Y + beq dcb_done + + ; unrolled loop to write out each line + +dcb_row0: + lda CondensedRow0-$19, Y ; get 1-byte font row + sta $FDFD, X ; write out to graphics mem +dcb_row1: + lda CondensedRow1-$19, Y + sta $FDFD, X +dcb_row2: + lda CondensedRow2-$19, Y + sta $FDFD, X +dcb_row3: + lda CondensedRow3-$19, Y + sta $FDFD, X +dcb_row4: + lda CondensedRow4-$19, Y + sta $FDFD, X +dcb_row5: + lda CondensedRow5-$19, Y + sta $FDFD, X +dcb_row6: + lda CondensedRow6-$19, Y + sta $FDFD, X +dcb_row7: + lda CondensedRow7-$19, Y + sta $FDFD, X +dcb_row8: + lda CondensedRow8-$19, Y + sta $FDFD, X +dcb_row9: + lda CondensedRow9-$19, Y + sta $FDFD, X + + inx ; move to next + bpl dcb_loop + +dcb_done: + + rts + diff --git a/graphics/hgr/hgr_font_4am/font_vmw_condensed_data.s b/graphics/hgr/hgr_font_4am/font_vmw_condensed_data.s new file mode 100644 index 00000000..ac80b694 --- /dev/null +++ b/graphics/hgr/hgr_font_4am/font_vmw_condensed_data.s @@ -0,0 +1,994 @@ +; Million Perfect Tiles Condensed pixel font +; (c) 2023 by 4am +; license:Open Font License 1.1, see OFL.txt +; This file is automatically generated +CondensedRow0: + .byte $80 ; middot + .byte $80 ; blue tile + .byte $80 ; white tile + .byte $80 ; up arrow + .byte $8C ; down arrow + .byte $80 ; left arrow + .byte $80 ; right arrow + .byte $80 ; space + .byte $80 ; ! + .byte $80 ; " + .byte $80 ; # + .byte $80 ; $ + .byte $80 ; % + .byte $80 ; & + .byte $80 ; ' + .byte $80 ; ( + .byte $80 ; ) + .byte $80 ; * + .byte $80 ; + + .byte $80 ; , + .byte $80 ; - + .byte $80 ; . + .byte $B0 ; / + .byte $9E ; 0 + .byte $8E ; 1 + .byte $9E ; 2 + .byte $9F ; 3 + .byte $B3 ; 4 + .byte $BF ; 5 + .byte $9E ; 6 + .byte $BF ; 7 + .byte $9E ; 8 + .byte $9E ; 9 + .byte $80 ; : + .byte $80 ; ; + .byte $80 ; < + .byte $80 ; = + .byte $80 ; > + .byte $9E ; ? + .byte $80 ; @ + .byte $BF ; A + .byte $9F ; B + .byte $BF ; C + .byte $9F ; D + .byte $BF ; E + .byte $BF ; F + .byte $BF ; G + .byte $B3 ; H + .byte $BF ; I + .byte $BE ; J + .byte $B3 ; K + .byte $83 ; L + .byte $B3 ; M + .byte $9F ; N + .byte $BF ; O + .byte $9F ; P + .byte $BF ; Q + .byte $9F ; R + .byte $BE ; S + .byte $BF ; T + .byte $B3 ; U + .byte $B3 ; V + .byte $B3 ; W + .byte $B3 ; X + .byte $B3 ; Y + .byte $BF ; Z + .byte $80 ; [ + .byte $80 ; \ + .byte $80 ; ] + .byte $80 ; ^ + .byte $80 ; _ + .byte $80 ; ' + .byte $80 ; a + .byte $83 ; b + .byte $80 ; c + .byte $B0 ; d + .byte $80 ; e + .byte $9C ; f + .byte $80 ; g + .byte $83 ; h + .byte $8C ; i + .byte $98 ; j + .byte $83 ; k + .byte $8C ; l + .byte $80 ; m + .byte $80 ; n + .byte $80 ; o + .byte $80 ; p + .byte $80 ; q + .byte $80 ; r + .byte $80 ; s + .byte $8C ; t + .byte $80 ; u + .byte $80 ; v + .byte $80 ; w + .byte $80 ; x + .byte $80 ; y + .byte $80 ; z +CondensedRow1: + .byte $80 ; middot + .byte $80 ; blue tile + .byte $80 ; white tile + .byte $80 ; up arrow + .byte $8C ; down arrow + .byte $80 ; left arrow + .byte $80 ; right arrow + .byte $80 ; space + .byte $80 ; ! + .byte $80 ; " + .byte $80 ; # + .byte $80 ; $ + .byte $80 ; % + .byte $80 ; & + .byte $80 ; ' + .byte $80 ; ( + .byte $80 ; ) + .byte $80 ; * + .byte $80 ; + + .byte $80 ; , + .byte $80 ; - + .byte $80 ; . + .byte $B0 ; / + .byte $BF ; 0 + .byte $8E ; 1 + .byte $BF ; 2 + .byte $BF ; 3 + .byte $B3 ; 4 + .byte $BF ; 5 + .byte $BF ; 6 + .byte $BF ; 7 + .byte $9E ; 8 + .byte $BF ; 9 + .byte $80 ; : + .byte $80 ; ; + .byte $80 ; < + .byte $80 ; = + .byte $80 ; > + .byte $BF ; ? + .byte $80 ; @ + .byte $BF ; A + .byte $BF ; B + .byte $BF ; C + .byte $BF ; D + .byte $BF ; E + .byte $BF ; F + .byte $BF ; G + .byte $B3 ; H + .byte $BF ; I + .byte $BE ; J + .byte $B3 ; K + .byte $83 ; L + .byte $BF ; M + .byte $BF ; N + .byte $BF ; O + .byte $BF ; P + .byte $BF ; Q + .byte $BF ; R + .byte $BF ; S + .byte $BF ; T + .byte $B3 ; U + .byte $B3 ; V + .byte $B3 ; W + .byte $B3 ; X + .byte $B3 ; Y + .byte $BF ; Z + .byte $80 ; [ + .byte $80 ; \ + .byte $80 ; ] + .byte $80 ; ^ + .byte $80 ; _ + .byte $80 ; ' + .byte $80 ; a + .byte $83 ; b + .byte $80 ; c + .byte $B0 ; d + .byte $80 ; e + .byte $BE ; f + .byte $80 ; g + .byte $83 ; h + .byte $8C ; i + .byte $98 ; j + .byte $83 ; k + .byte $8C ; l + .byte $80 ; m + .byte $80 ; n + .byte $80 ; o + .byte $80 ; p + .byte $80 ; q + .byte $80 ; r + .byte $80 ; s + .byte $8C ; t + .byte $80 ; u + .byte $80 ; v + .byte $80 ; w + .byte $80 ; x + .byte $80 ; y + .byte $80 ; z +CondensedRow2: + .byte $80 ; middot + .byte $AA ; blue tile + .byte $BE ; white tile + .byte $80 ; up arrow + .byte $8C ; down arrow + .byte $84 ; left arrow + .byte $88 ; right arrow + .byte $80 ; space + .byte $80 ; ! + .byte $80 ; " + .byte $80 ; # + .byte $80 ; $ + .byte $81 ; % + .byte $80 ; & + .byte $80 ; ' + .byte $80 ; ( + .byte $80 ; ) + .byte $80 ; * + .byte $80 ; + + .byte $80 ; , + .byte $80 ; - + .byte $80 ; . + .byte $98 ; / + .byte $B3 ; 0 + .byte $8C ; 1 + .byte $B3 ; 2 + .byte $B0 ; 3 + .byte $B3 ; 4 + .byte $83 ; 5 + .byte $83 ; 6 + .byte $B3 ; 7 + .byte $B3 ; 8 + .byte $B3 ; 9 + .byte $80 ; : + .byte $80 ; ; + .byte $80 ; < + .byte $80 ; = + .byte $81 ; > + .byte $B3 ; ? + .byte $80 ; @ + .byte $B0 ; A + .byte $B0 ; B + .byte $B0 ; C + .byte $B0 ; D + .byte $80 ; E + .byte $80 ; F + .byte $B0 ; G + .byte $B0 ; H + .byte $80 ; I + .byte $80 ; J + .byte $9B ; K + .byte $83 ; L + .byte $BF ; M + .byte $B0 ; N + .byte $B0 ; O + .byte $B0 ; P + .byte $B0 ; Q + .byte $B0 ; R + .byte $80 ; S + .byte $80 ; T + .byte $B3 ; U + .byte $B3 ; V + .byte $B3 ; W + .byte $9E ; X + .byte $B3 ; Y + .byte $98 ; Z + .byte $80 ; [ + .byte $80 ; \ + .byte $80 ; ] + .byte $80 ; ^ + .byte $80 ; _ + .byte $80 ; ' + .byte $80 ; a + .byte $83 ; b + .byte $80 ; c + .byte $B0 ; d + .byte $80 ; e + .byte $B6 ; f + .byte $80 ; g + .byte $83 ; h + .byte $80 ; i + .byte $80 ; j + .byte $83 ; k + .byte $8C ; l + .byte $80 ; m + .byte $80 ; n + .byte $80 ; o + .byte $80 ; p + .byte $80 ; q + .byte $80 ; r + .byte $80 ; s + .byte $8C ; t + .byte $80 ; u + .byte $80 ; v + .byte $80 ; w + .byte $80 ; x + .byte $80 ; y + .byte $80 ; z +CondensedRow3: + .byte $80 ; middot + .byte $AA ; blue tile + .byte $BE ; white tile + .byte $80 ; up arrow + .byte $BF ; down arrow + .byte $86 ; left arrow + .byte $98 ; right arrow + .byte $80 ; space + .byte $80 ; ! + .byte $80 ; " + .byte $80 ; # + .byte $80 ; $ + .byte $87 ; % + .byte $80 ; & + .byte $80 ; ' + .byte $80 ; ( + .byte $80 ; ) + .byte $80 ; * + .byte $80 ; + + .byte $80 ; , + .byte $80 ; - + .byte $80 ; . + .byte $98 ; / + .byte $B3 ; 0 + .byte $8C ; 1 + .byte $B0 ; 2 + .byte $B0 ; 3 + .byte $B3 ; 4 + .byte $83 ; 5 + .byte $83 ; 6 + .byte $B0 ; 7 + .byte $B3 ; 8 + .byte $B3 ; 9 + .byte $80 ; : + .byte $80 ; ; + .byte $80 ; < + .byte $80 ; = + .byte $85 ; > + .byte $B0 ; ? + .byte $80 ; @ + .byte $B3 ; A + .byte $B3 ; B + .byte $83 ; C + .byte $B3 ; D + .byte $83 ; E + .byte $83 ; F + .byte $83 ; G + .byte $B3 ; H + .byte $8C ; I + .byte $98 ; J + .byte $9B ; K + .byte $83 ; L + .byte $BF ; M + .byte $B3 ; N + .byte $B3 ; O + .byte $B3 ; P + .byte $B3 ; Q + .byte $B3 ; R + .byte $83 ; S + .byte $8C ; T + .byte $B3 ; U + .byte $B3 ; V + .byte $B3 ; W + .byte $9E ; X + .byte $B3 ; Y + .byte $98 ; Z + .byte $80 ; [ + .byte $80 ; \ + .byte $80 ; ] + .byte $80 ; ^ + .byte $80 ; _ + .byte $80 ; ' + .byte $9E ; a + .byte $9F ; b + .byte $9E ; c + .byte $BE ; d + .byte $9E ; e + .byte $86 ; f + .byte $BE ; g + .byte $9F ; h + .byte $8C ; i + .byte $98 ; j + .byte $B3 ; k + .byte $8C ; l + .byte $B3 ; m + .byte $9F ; n + .byte $9E ; o + .byte $9F ; p + .byte $BE ; q + .byte $BB ; r + .byte $BE ; s + .byte $BF ; t + .byte $B3 ; u + .byte $B3 ; v + .byte $B3 ; w + .byte $B3 ; x + .byte $B3 ; y + .byte $BF ; z +CondensedRow4: + .byte $80 ; middot + .byte $AA ; blue tile + .byte $BE ; white tile + .byte $8C ; up arrow + .byte $9E ; down arrow + .byte $BF ; left arrow + .byte $BF ; right arrow + .byte $80 ; space + .byte $80 ; ! + .byte $80 ; " + .byte $80 ; # + .byte $80 ; $ + .byte $9F ; % + .byte $80 ; & + .byte $80 ; ' + .byte $80 ; ( + .byte $80 ; ) + .byte $80 ; * + .byte $80 ; + + .byte $80 ; , + .byte $9E ; - + .byte $80 ; . + .byte $8C ; / + .byte $BB ; 0 + .byte $8C ; 1 + .byte $9C ; 2 + .byte $9E ; 3 + .byte $BF ; 4 + .byte $9F ; 5 + .byte $9F ; 6 + .byte $B0 ; 7 + .byte $9E ; 8 + .byte $BF ; 9 + .byte $80 ; : + .byte $80 ; ; + .byte $80 ; < + .byte $80 ; = + .byte $95 ; > + .byte $98 ; ? + .byte $80 ; @ + .byte $BF ; A + .byte $9F ; B + .byte $83 ; C + .byte $B3 ; D + .byte $9F ; E + .byte $9F ; F + .byte $BB ; G + .byte $BF ; H + .byte $8C ; I + .byte $98 ; J + .byte $8B ; K + .byte $83 ; L + .byte $BF ; M + .byte $B3 ; N + .byte $B3 ; O + .byte $BF ; P + .byte $B3 ; Q + .byte $BF ; R + .byte $9F ; S + .byte $8C ; T + .byte $B3 ; U + .byte $B3 ; V + .byte $B3 ; W + .byte $8C ; X + .byte $B7 ; Y + .byte $8C ; Z + .byte $80 ; [ + .byte $80 ; \ + .byte $80 ; ] + .byte $80 ; ^ + .byte $80 ; _ + .byte $80 ; ' + .byte $BE ; a + .byte $BF ; b + .byte $BF ; c + .byte $BF ; d + .byte $BF ; e + .byte $86 ; f + .byte $B3 ; g + .byte $BF ; h + .byte $8C ; i + .byte $98 ; j + .byte $B3 ; k + .byte $8C ; l + .byte $BF ; m + .byte $BF ; n + .byte $BF ; o + .byte $BF ; p + .byte $BF ; q + .byte $BF ; r + .byte $BF ; s + .byte $BF ; t + .byte $B3 ; u + .byte $B3 ; v + .byte $B3 ; w + .byte $B3 ; x + .byte $B3 ; y + .byte $BF ; z +CondensedRow5: + .byte $88 ; middot + .byte $AA ; blue tile + .byte $BE ; white tile + .byte $9E ; up arrow + .byte $8C ; down arrow + .byte $BF ; left arrow + .byte $BF ; right arrow + .byte $80 ; space + .byte $80 ; ! + .byte $80 ; " + .byte $80 ; # + .byte $80 ; $ + .byte $FF ; % + .byte $80 ; & + .byte $80 ; ' + .byte $80 ; ( + .byte $80 ; ) + .byte $80 ; * + .byte $80 ; + + .byte $80 ; , + .byte $9E ; - + .byte $80 ; . + .byte $8C ; / + .byte $B7 ; 0 + .byte $8C ; 1 + .byte $86 ; 2 + .byte $9E ; 3 + .byte $BF ; 4 + .byte $BF ; 5 + .byte $BF ; 6 + .byte $B0 ; 7 + .byte $9E ; 8 + .byte $BE ; 9 + .byte $80 ; : + .byte $80 ; ; + .byte $80 ; < + .byte $80 ; = + .byte $D5 ; > + .byte $8C ; ? + .byte $80 ; @ + .byte $BF ; A + .byte $9F ; B + .byte $83 ; C + .byte $B3 ; D + .byte $9F ; E + .byte $9F ; F + .byte $BB ; G + .byte $BF ; H + .byte $8C ; I + .byte $98 ; J + .byte $8B ; K + .byte $83 ; L + .byte $B3 ; M + .byte $B3 ; N + .byte $B3 ; O + .byte $9F ; P + .byte $B3 ; Q + .byte $9F ; R + .byte $BE ; S + .byte $8C ; T + .byte $B3 ; U + .byte $B3 ; V + .byte $BF ; W + .byte $8C ; X + .byte $B7 ; Y + .byte $8C ; Z + .byte $80 ; [ + .byte $80 ; \ + .byte $80 ; ] + .byte $80 ; ^ + .byte $80 ; _ + .byte $80 ; ' + .byte $B0 ; a + .byte $B3 ; b + .byte $B3 ; c + .byte $B3 ; d + .byte $B3 ; e + .byte $9F ; f + .byte $B3 ; g + .byte $B3 ; h + .byte $8C ; i + .byte $98 ; j + .byte $9B ; k + .byte $8C ; l + .byte $BF ; m + .byte $B0 ; n + .byte $B0 ; o + .byte $B3 ; p + .byte $B3 ; q + .byte $83 ; r + .byte $83 ; s + .byte $8C ; t + .byte $B3 ; u + .byte $B3 ; v + .byte $B3 ; w + .byte $9E ; x + .byte $B3 ; y + .byte $98 ; z +CondensedRow6: + .byte $80 ; middot + .byte $AA ; blue tile + .byte $BE ; white tile + .byte $BF ; up arrow + .byte $80 ; down arrow + .byte $86 ; left arrow + .byte $98 ; right arrow + .byte $80 ; space + .byte $80 ; ! + .byte $80 ; " + .byte $80 ; # + .byte $80 ; $ + .byte $9F ; % + .byte $80 ; & + .byte $80 ; ' + .byte $80 ; ( + .byte $80 ; ) + .byte $80 ; * + .byte $80 ; + + .byte $80 ; , + .byte $80 ; - + .byte $80 ; . + .byte $86 ; / + .byte $B3 ; 0 + .byte $8C ; 1 + .byte $83 ; 2 + .byte $B0 ; 3 + .byte $B0 ; 4 + .byte $B0 ; 5 + .byte $B3 ; 6 + .byte $B0 ; 7 + .byte $B3 ; 8 + .byte $B0 ; 9 + .byte $80 ; : + .byte $80 ; ; + .byte $80 ; < + .byte $80 ; = + .byte $95 ; > + .byte $8C ; ? + .byte $80 ; @ + .byte $B3 ; A + .byte $B3 ; B + .byte $83 ; C + .byte $B3 ; D + .byte $83 ; E + .byte $83 ; F + .byte $B3 ; G + .byte $B3 ; H + .byte $8C ; I + .byte $98 ; J + .byte $9B ; K + .byte $83 ; L + .byte $B3 ; M + .byte $B3 ; N + .byte $B3 ; O + .byte $83 ; P + .byte $B3 ; Q + .byte $9B ; R + .byte $B0 ; S + .byte $8C ; T + .byte $B3 ; U + .byte $B3 ; V + .byte $BF ; W + .byte $9E ; X + .byte $B0 ; Y + .byte $86 ; Z + .byte $80 ; [ + .byte $80 ; \ + .byte $80 ; ] + .byte $80 ; ^ + .byte $80 ; _ + .byte $80 ; ' + .byte $BE ; a + .byte $B3 ; b + .byte $83 ; c + .byte $B3 ; d + .byte $BF ; e + .byte $9F ; f + .byte $BE ; g + .byte $B3 ; h + .byte $8C ; i + .byte $98 ; j + .byte $8F ; k + .byte $8C ; l + .byte $BF ; m + .byte $B3 ; n + .byte $B3 ; o + .byte $B3 ; p + .byte $B3 ; q + .byte $83 ; r + .byte $9E ; s + .byte $8C ; t + .byte $B3 ; u + .byte $B3 ; v + .byte $BF ; w + .byte $9E ; x + .byte $BE ; y + .byte $8C ; z +CondensedRow7: + .byte $80 ; middot + .byte $AA ; blue tile + .byte $BE ; white tile + .byte $8C ; up arrow + .byte $80 ; down arrow + .byte $84 ; left arrow + .byte $88 ; right arrow + .byte $80 ; space + .byte $80 ; ! + .byte $80 ; " + .byte $80 ; # + .byte $80 ; $ + .byte $87 ; % + .byte $80 ; & + .byte $80 ; ' + .byte $80 ; ( + .byte $80 ; ) + .byte $80 ; * + .byte $80 ; + + .byte $8C ; , + .byte $80 ; - + .byte $8C ; . + .byte $86 ; / + .byte $B3 ; 0 + .byte $8C ; 1 + .byte $83 ; 2 + .byte $B0 ; 3 + .byte $B0 ; 4 + .byte $B0 ; 5 + .byte $B3 ; 6 + .byte $B0 ; 7 + .byte $B3 ; 8 + .byte $B0 ; 9 + .byte $80 ; : + .byte $80 ; ; + .byte $80 ; < + .byte $80 ; = + .byte $85 ; > + .byte $80 ; ? + .byte $80 ; @ + .byte $B3 ; A + .byte $B3 ; B + .byte $B3 ; C + .byte $B3 ; D + .byte $83 ; E + .byte $83 ; F + .byte $B3 ; G + .byte $B3 ; H + .byte $8C ; I + .byte $9B ; J + .byte $9B ; K + .byte $80 ; L + .byte $B3 ; M + .byte $B3 ; N + .byte $B3 ; O + .byte $83 ; P + .byte $9B ; Q + .byte $9B ; R + .byte $B0 ; S + .byte $8C ; T + .byte $B0 ; U + .byte $98 ; V + .byte $BF ; W + .byte $9E ; X + .byte $B0 ; Y + .byte $80 ; Z + .byte $80 ; [ + .byte $80 ; \ + .byte $80 ; ] + .byte $80 ; ^ + .byte $80 ; _ + .byte $80 ; ' + .byte $B3 ; a + .byte $B3 ; b + .byte $B3 ; c + .byte $B3 ; d + .byte $83 ; e + .byte $86 ; f + .byte $B0 ; g + .byte $B3 ; h + .byte $8C ; i + .byte $98 ; j + .byte $9B ; k + .byte $8C ; l + .byte $B3 ; m + .byte $B3 ; n + .byte $B3 ; o + .byte $9F ; p + .byte $BE ; q + .byte $83 ; r + .byte $B0 ; s + .byte $8C ; t + .byte $B3 ; u + .byte $9B ; v + .byte $BF ; w + .byte $9E ; x + .byte $B0 ; y + .byte $86 ; z +CondensedRow8: + .byte $80 ; middot + .byte $80 ; blue tile + .byte $80 ; white tile + .byte $8C ; up arrow + .byte $80 ; down arrow + .byte $80 ; left arrow + .byte $80 ; right arrow + .byte $80 ; space + .byte $80 ; ! + .byte $80 ; " + .byte $80 ; # + .byte $80 ; $ + .byte $81 ; % + .byte $80 ; & + .byte $80 ; ' + .byte $80 ; ( + .byte $80 ; ) + .byte $80 ; * + .byte $80 ; + + .byte $8C ; , + .byte $80 ; - + .byte $8C ; . + .byte $83 ; / + .byte $BF ; 0 + .byte $9E ; 1 + .byte $BF ; 2 + .byte $BF ; 3 + .byte $B0 ; 4 + .byte $BF ; 5 + .byte $BF ; 6 + .byte $B0 ; 7 + .byte $9E ; 8 + .byte $BF ; 9 + .byte $80 ; : + .byte $80 ; ; + .byte $80 ; < + .byte $80 ; = + .byte $81 ; > + .byte $8C ; ? + .byte $80 ; @ + .byte $B3 ; A + .byte $BF ; B + .byte $BF ; C + .byte $BF ; D + .byte $BF ; E + .byte $83 ; F + .byte $BF ; G + .byte $B3 ; H + .byte $BF ; I + .byte $9F ; J + .byte $B3 ; K + .byte $BF ; L + .byte $B3 ; M + .byte $B3 ; N + .byte $BF ; O + .byte $83 ; P + .byte $B7 ; Q + .byte $B3 ; R + .byte $BF ; S + .byte $8C ; T + .byte $BF ; U + .byte $8F ; V + .byte $BF ; W + .byte $B3 ; X + .byte $BF ; Y + .byte $BF ; Z + .byte $80 ; [ + .byte $80 ; \ + .byte $80 ; ] + .byte $80 ; ^ + .byte $80 ; _ + .byte $80 ; ' + .byte $BF ; a + .byte $BF ; b + .byte $BF ; c + .byte $BF ; d + .byte $BF ; e + .byte $86 ; f + .byte $BF ; g + .byte $B3 ; h + .byte $9C ; i + .byte $9E ; j + .byte $B3 ; k + .byte $BC ; l + .byte $B3 ; m + .byte $B3 ; n + .byte $BF ; o + .byte $83 ; p + .byte $B0 ; q + .byte $83 ; r + .byte $BF ; s + .byte $BC ; t + .byte $BF ; u + .byte $8F ; v + .byte $BF ; w + .byte $B3 ; x + .byte $BF ; y + .byte $BF ; z +CondensedRow9: + .byte $80 ; middot + .byte $80 ; blue tile + .byte $80 ; white tile + .byte $8C ; up arrow + .byte $80 ; down arrow + .byte $80 ; left arrow + .byte $80 ; right arrow + .byte $80 ; space + .byte $80 ; ! + .byte $80 ; " + .byte $80 ; # + .byte $80 ; $ + .byte $80 ; % + .byte $80 ; & + .byte $80 ; ' + .byte $80 ; ( + .byte $80 ; ) + .byte $80 ; * + .byte $80 ; + + .byte $86 ; , + .byte $80 ; - + .byte $80 ; . + .byte $83 ; / + .byte $9E ; 0 + .byte $9E ; 1 + .byte $BF ; 2 + .byte $9F ; 3 + .byte $B0 ; 4 + .byte $9F ; 5 + .byte $9E ; 6 + .byte $B0 ; 7 + .byte $9E ; 8 + .byte $9E ; 9 + .byte $80 ; : + .byte $80 ; ; + .byte $80 ; < + .byte $80 ; = + .byte $80 ; > + .byte $8C ; ? + .byte $80 ; @ + .byte $B3 ; A + .byte $9F ; B + .byte $BF ; C + .byte $9F ; D + .byte $BF ; E + .byte $83 ; F + .byte $BF ; G + .byte $B3 ; H + .byte $BF ; I + .byte $9F ; J + .byte $B3 ; K + .byte $BF ; L + .byte $B3 ; M + .byte $B3 ; N + .byte $BF ; O + .byte $83 ; P + .byte $B7 ; Q + .byte $B3 ; R + .byte $9F ; S + .byte $8C ; T + .byte $BF ; U + .byte $87 ; V + .byte $B3 ; W + .byte $B3 ; X + .byte $BF ; Y + .byte $BF ; Z + .byte $80 ; [ + .byte $80 ; \ + .byte $80 ; ] + .byte $80 ; ^ + .byte $80 ; _ + .byte $80 ; ' + .byte $BE ; a + .byte $9F ; b + .byte $9E ; c + .byte $BE ; d + .byte $BE ; e + .byte $86 ; f + .byte $9F ; g + .byte $B3 ; h + .byte $98 ; i + .byte $8E ; j + .byte $B3 ; k + .byte $B8 ; l + .byte $B3 ; m + .byte $B3 ; n + .byte $9E ; o + .byte $83 ; p + .byte $B0 ; q + .byte $83 ; r + .byte $9F ; s + .byte $B8 ; t + .byte $BE ; u + .byte $87 ; v + .byte $B3 ; w + .byte $B3 ; x + .byte $9F ; y + .byte $BF ; z