hgr_font: modify to work with vmw-style strings

This commit is contained in:
Vince Weaver 2023-08-23 21:36:11 -04:00
parent 68ae91fe7e
commit 8bca6fb354
2 changed files with 1173 additions and 0 deletions

View File

@ -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

View File

@ -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