further changes for v1.7: cpu fixes, support for 'hardware' devices, display to vnc
[dcpu16] / chargen-4x8.h
1 #ifndef CHARGEN_4X8_H_KMZC3DOG
2 #define CHARGEN_4X8_H_KMZC3DOG
3
4 /* 4x8 pixel default font map */
5
6 const unsigned char chargen_4x8_glyphs[][4] = {
7 /* 00 */
8 { 0x00, 0xf0, 0x10, 0x10 },
9 /* 01 */
10 { 0x10, 0xf0, 0x10, 0x10 },
11 /* 02 */
12 { 0x10, 0x1f, 0x10, 0x10 },
13 /* 03 */
14 { 0x00, 0xff, 0x10, 0x10 },
15 /* 04 */
16 { 0x10, 0x10, 0x10, 0x10 },
17 /* 05 */
18 { 0x10, 0xff, 0x10, 0x10 },
19 /* 06 */
20 { 0x00, 0xff, 0x28, 0x28 },
21 /* 07 */
22 { 0xff, 0x00, 0xff, 0x10 },
23 /* 08 */
24 { 0xf8, 0x08, 0xe8, 0x28 },
25 /* 09 */
26 { 0x3f, 0x20, 0x2f, 0x28 },
27 /* 0a */
28 { 0xe8, 0x08, 0xe8, 0x28 },
29 /* 0b */
30 { 0x2f, 0x20, 0x2f, 0x20 },
31 /* 0c */
32 { 0xff, 0x00, 0xef, 0x2f },
33 /* 0d */
34 { 0x2f, 0x2f, 0x2f, 0x2f },
35 /* 0e */
36 { 0xef, 0x00, 0xef, 0xe8 },
37 /* 0f */
38 { 0x28, 0xe8, 0x28, 0x28 },
39 /* 10 */
40 { 0xf0, 0x10, 0xf0, 0x10 },
41 /* 11 */
42 { 0x28, 0x2f, 0x28, 0x28 },
43 /* 12 */
44 { 0x1f, 0x10, 0x1f, 0x10 },
45 /* 13 */
46 { 0xf0, 0x10, 0xf0, 0x10 },
47 /* 14 */
48 { 0x00, 0xf8, 0x28, 0x28 },
49 /* 15 */
50 { 0x00, 0x3f, 0x28, 0x28 },
51 /* 16 */
52 { 0x1f, 0x10, 0x1f, 0x10 },
53 /* 17 */
54 { 0xff, 0x10, 0xff, 0x10 },
55 /* 18 */
56 { 0x28, 0xff, 0x28, 0x28 },
57 /* 19 */
58 { 0x10, 0xf0, 0x00, 0x00 },
59 /* 1a */
60 { 0x00, 0x1f, 0x10, 0x10 },
61 /* 1b */
62 { 0xff, 0xff, 0xff, 0xff },
63 /* 1c */
64 { 0x0f, 0x0f, 0x0f, 0x0f },
65 /* 1d */
66 { 0xff, 0xff, 0x00, 0x00 },
67 /* 1e */
68 { 0x00, 0x00, 0xff ,0xff },
69 /* 1f */
70 { 0xf0, 0xf0, 0xf0, 0xf0 },
71
72 /* --- */
73
74 /* 20 ' ' */
75 { 0x00, 0x00, 0x00, 0x00 },
76 /* 21 '!' */
77 { 0x00, 0xfa, 0x00, 0x00 },
78 /* 22 '"' "*/
79 { 0xb0, 0x00, 0xb0, 0x00 },
80 /* 23 '#' */
81 { 0x7c, 0x28, 0x7c, 0x00 },
82 /* 24 '$' */
83 { 0x64, 0xd6, 0x4c, 0x00 },
84 /* 25 '%' */
85 { 0x86, 0x38, 0xc2, 0x00 },
86 /* 26 '&' */
87 { 0x6c, 0x94, 0x6e, 0x0a },
88 /* 27 ''' */
89 { 0x00, 0x40, 0x80, 0x00 },
90 /* 28 '(' */
91 { 0x38, 0x44, 0x82, 0x00 },
92 /* 29 ')' */
93 { 0x82, 0x44, 0x38, 0x00 },
94 /* 2a '*' */
95 { 0x54, 0x38, 0x54, 0x00 },
96 /* 2b '+' */
97 { 0x10, 0x7c, 0x10, 0x00 },
98 /* 2c ',' */
99 { 0x02, 0x04, 0x00, 0x00 },
100 /* 2d '-' */
101 { 0x10, 0x10, 0x10, 0x00 },
102 /* 2e '.' */
103 { 0x00, 0x02, 0x00, 0x00 },
104 /* 2f '/' */
105 { 0x06, 0x38, 0xc0, 0x00 },
106 /* 30 '0' */
107 { 0x7c, 0x82, 0x7c, 0x00 },
108 /* 31 '1' */
109 { 0x42, 0xfe, 0x02, 0x00 },
110 /* 32 '2' */
111 { 0x46, 0x9a, 0x62, 0x00 },
112 /* 33 '3' */
113 { 0x44, 0x92, 0x6c, 0x00 },
114 /* 34 '4' */
115 { 0xf0, 0x10, 0xfe, 0x00 },
116 /* 35 '5' */
117 { 0xe4, 0xa2, 0x9c, 0x00 },
118 /* 36 '6' */
119 { 0x7c, 0x92, 0x4c, 0x00 },
120 /* 37 '7' */
121 { 0x86, 0x98, 0xe0, 0x00 },
122 /* 38 '8' */
123 { 0x6c, 0x92, 0x6c, 0x00 },
124 /* 39 '9' */
125 { 0x64, 0x92, 0x7c, 0x00 },
126 /* 3a ':' */
127 { 0x00, 0x24, 0x00, 0x00 },
128 /* 3b ';' */
129 { 0x02, 0x24, 0x00, 0x00 },
130 /* 3c '<' */
131 { 0x10, 0x28, 0x44, 0x82 },
132 /* 3d '=' */
133 { 0x28, 0x28, 0x28, 0x00 },
134 /* 3e '>' */
135 { 0x82, 0x44, 0x28, 0x10 },
136 /* 3f '?' */
137 { 0x40, 0x9a, 0x60, 0x00 },
138
139 /* --- */
140
141 /* 40 '@' */
142 { 0x7c, 0x9a, 0x7a, 0x00 },
143 /* 41 'A' */
144 { 0x7e, 0x90, 0x7e, 0x00 },
145 /* 42 'B' */
146 { 0xfe, 0x92, 0x6c, 0x00 },
147 /* 43 'C' */
148 { 0x7c, 0x82, 0x44, 0x00 },
149 /* 44 'D' */
150 { 0xfe, 0x82, 0x7c, 0x00 },
151 /* 45 'E' */
152 { 0xfe, 0x92, 0x82, 0x00 },
153 /* 46 'F' */
154 { 0xfe, 0x90, 0x80, 0x00 },
155 /* 47 'G' */
156 { 0x7c, 0x92, 0x5c, 0x00 },
157 /* 48 'H' */
158 { 0xfe, 0x10, 0xfe, 0x00 },
159 /* 49 'I' */
160 { 0x82, 0xfe, 0x82, 0x00 },
161 /* 4a 'J' */
162 { 0x04, 0x02, 0xfc, 0x00 },
163 /* 4b 'K' */
164 { 0xfe, 0x30, 0xce, 0x00 },
165 /* 4c 'L' */
166 { 0xfe, 0x02, 0x02, 0x00 },
167 /* 4d 'M' */
168 { 0xfe, 0x60, 0xfe, 0x00 },
169 /* 4e 'N' */
170 { 0xfe, 0x80, 0x7e, 0x00 },
171 /* 4f 'O' */
172 { 0x7c, 0x82, 0x7c, 0x00 },
173 /* 50 'P' */
174 { 0xfe, 0x90, 0x60, 0x00 },
175 /* 51 'Q' */
176 { 0x7c, 0x82, 0x7d, 0x00 },
177 /* 52 'R' */
178 { 0xfe, 0x90, 0x6e, 0x00 },
179 /* 53 'S' */
180 { 0x64, 0x92, 0x4c, 0x00 },
181 /* 54 'T' */
182 { 0x80, 0xfe, 0x80, 0x00 },
183 /* 55 'U' */
184 { 0xfe, 0x02, 0xfe, 0x00 },
185 /* 56 'V' */
186 { 0xf8, 0x06, 0xf8, 0x00 },
187 /* 57 'W' */
188 { 0xfe, 0x0c, 0xfe, 0x00 },
189 /* 58 'X' */
190 { 0xee, 0x10, 0xee, 0x00 },
191 /* 59 'Y' */
192 { 0xe0, 0x1e, 0xe0, 0x00 },
193 /* 5a 'Z' */
194 { 0x8e, 0x92, 0xe2, 0x00 },
195 /* 5b '[' */
196 { 0x00, 0xfe, 0x82, 0x00 },
197 /* 5c '\' */
198 { 0xc0, 0x38, 0x06, 0x00 },
199 /* 5d ']' */
200 { 0x00, 0x82, 0xfe, 0x00 },
201 /* 5e '^' */
202 { 0x40, 0x80, 0x40, 0x00 },
203 /* 5f '_' */
204 { 0x01, 0x01, 0x01, 0x00 },
205
206 /* --- */
207
208 /* 60 '`' */
209 { 0x00, 0x80, 0x40, 0x00 },
210 /* 61 'a' */
211 { 0x24, 0x2a, 0x1e, 0x00 },
212 /* 62 'b' */
213 { 0xfe, 0x22, 0x1c, 0x00 },
214 /* 63 'c' */
215 { 0x1c, 0x22, 0x14, 0x00 },
216 /* 64 'd' */
217 { 0x1c, 0x22, 0xfe, 0x00 },
218 /* 65 'e' */
219 { 0x1c, 0x2a, 0x1a, 0x00 },
220 /* 66 'f' */
221 { 0x10, 0x7e, 0x90, 0x00 },
222 /* 67 'g' */
223 { 0x12, 0x2a, 0x3c, 0x00 },
224 /* 68 'h' */
225 { 0xfe, 0x20, 0x1e, 0x00 },
226 /* 69 'i' */
227 { 0x22, 0xbe, 0x02, 0x00 },
228 /* 6a 'j' */
229 { 0x04, 0x02, 0xbc, 0x00 },
230 /* 6b 'k' */
231 { 0xfe, 0x08, 0x36, 0x00 },
232 /* 6c 'l' */
233 { 0x82, 0xfe, 0x02, 0x00 },
234 /* 6d 'm' */
235 { 0x3e, 0x18, 0x3e, 0x00 },
236 /* 6e 'n' */
237 { 0x3e, 0x20, 0x1e, 0x00 },
238 /* 6f 'o' */
239 { 0x1c, 0x22, 0x1c, 0x00 },
240 /* 70 'p' */
241 { 0x3e, 0x28, 0x10, 0x00 },
242 /* 71 'q' */
243 { 0x10, 0x28, 0x3e, 0x00 },
244 /* 72 'r' */
245 { 0x3e, 0x20, 0x10, 0x00 },
246 /* 73 's' */
247 { 0x12, 0x2a, 0x24, 0x00 },
248 /* 74 't' */
249 { 0x20, 0x7c, 0x22, 0x00 },
250 /* 75 'u' */
251 { 0x3c, 0x02, 0x3e, 0x00 },
252 /* 76 'v' */
253 { 0x38, 0x06, 0x38, 0x00 },
254 /* 77 'w' */
255 { 0x3e, 0x0c, 0x3e, 0x00 },
256 /* 78 'x' */
257 { 0x36, 0x08, 0x36, 0x00 },
258 /* 79 'y' */
259 { 0x32, 0x0a, 0x3c, 0x00 },
260 /* 7a 'z' */
261 { 0x26, 0x2a, 0x32, 0x00 },
262 /* 7b '{' */
263 { 0x10, 0x6c, 0x82, 0x00 },
264 /* 7c '|' */
265 { 0x00, 0xee, 0x00, 0x00 },
266 /* 7d '}' */
267 { 0x82, 0x6c, 0x10, 0x00 },
268 /* 7e '~' */
269 { 0x40, 0x80, 0x40, 0x80 },
270 /* 7f '<delta>' */
271 { 0x0e, 0x32, 0x0e, 0x00 },
272 };
273
274 #define CHARGEN_4x8_GLYPHS_NUM ( (sizeof chargen_4x8_glyphs) / (sizeof chargen_4x8_glyphs[0]) )
275
276 #endif /* CHARGEN_4X8_H_KMZC3DOG */