diff options
-rw-r--r-- | src/bd-font.c | 258 | ||||
-rw-r--r-- | src/main.c | 35 |
2 files changed, 287 insertions, 6 deletions
diff --git a/src/bd-font.c b/src/bd-font.c new file mode 100644 index 0000000..e4a6cc4 --- /dev/null +++ b/src/bd-font.c | |||
@@ -0,0 +1,258 @@ | |||
1 | static u8 font[][8] = { | ||
2 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, | ||
3 | {0x00, 0x00, 0x24, 0x00, 0x42, 0x3c, 0x00, 0x00}, | ||
4 | {0x00, 0x00, 0x24, 0x00, 0x3c, 0x42, 0x00, 0x00}, | ||
5 | {0x00, 0x00, 0x6c, 0x7c, 0x7c, 0x38, 0x10, 0x00}, | ||
6 | {0x00, 0x10, 0x38, 0x7c, 0x7c, 0x38, 0x10, 0x00}, | ||
7 | {0x00, 0x38, 0x38, 0x7c, 0x6c, 0x7c, 0x10, 0x38}, | ||
8 | {0x00, 0x10, 0x38, 0x7c, 0x7c, 0x7c, 0x10, 0x38}, | ||
9 | {0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00}, | ||
10 | {0x7e, 0x7e, 0x7e, 0x66, 0x66, 0x7e, 0x7e, 0x7e}, | ||
11 | {0x00, 0x00, 0x18, 0x24, 0x24, 0x18, 0x00, 0x00}, | ||
12 | {0x7e, 0x7e, 0x66, 0x5a, 0x5a, 0x66, 0x7e, 0x7e}, | ||
13 | {0x00, 0x10, 0x38, 0x7c, 0x10, 0x38, 0x44, 0x38}, | ||
14 | {0x00, 0x38, 0x44, 0x38, 0x10, 0x10, 0x7c, 0x10}, | ||
15 | {0x00, 0x18, 0x1c, 0x14, 0x10, 0x10, 0x30, 0x30}, | ||
16 | {0x00, 0x3c, 0x24, 0x24, 0x24, 0x2c, 0x6c, 0x60}, | ||
17 | {0x00, 0x10, 0x44, 0x10, 0x38, 0x10, 0x44, 0x10}, | ||
18 | {0x20, 0x30, 0x38, 0x3c, 0x38, 0x30, 0x20, 0x00}, | ||
19 | {0x04, 0x0c, 0x1c, 0x3c, 0x1c, 0x0c, 0x04, 0x00}, | ||
20 | {0x10, 0x38, 0x7c, 0x10, 0x10, 0x7c, 0x38, 0x10}, | ||
21 | {0x00, 0x28, 0x28, 0x28, 0x28, 0x28, 0x00, 0x28}, | ||
22 | {0x00, 0x3c, 0x54, 0x54, 0x34, 0x14, 0x14, 0x14}, | ||
23 | {0x00, 0x1c, 0x20, 0x3c, 0x42, 0x3c, 0x04, 0x78}, | ||
24 | {0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00}, | ||
25 | {0x10, 0x38, 0x7c, 0x10, 0x7c, 0x38, 0x10, 0x7c}, | ||
26 | {0x10, 0x38, 0x7c, 0x10, 0x10, 0x10, 0x10, 0x10}, | ||
27 | {0x10, 0x10, 0x10, 0x10, 0x10, 0x7c, 0x38, 0x10}, | ||
28 | {0x00, 0x00, 0x08, 0x0c, 0x7e, 0x0c, 0x08, 0x00}, | ||
29 | {0x00, 0x00, 0x10, 0x30, 0x7e, 0x30, 0x10, 0x00}, | ||
30 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x7c}, | ||
31 | {0x00, 0x00, 0x24, 0x66, 0xff, 0x66, 0x24, 0x00}, | ||
32 | {0x00, 0x10, 0x10, 0x38, 0x38, 0x7c, 0x7c, 0x00}, | ||
33 | {0x00, 0x7c, 0x7c, 0x38, 0x38, 0x10, 0x10, 0x00}, | ||
34 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, | ||
35 | {0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x10}, | ||
36 | {0x28, 0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00}, | ||
37 | {0x00, 0x00, 0x28, 0x7c, 0x28, 0x7c, 0x28, 0x00}, | ||
38 | {0x00, 0x10, 0x38, 0x40, 0x38, 0x04, 0x78, 0x10}, | ||
39 | {0x00, 0x00, 0x64, 0x68, 0x10, 0x2c, 0x4c, 0x00}, | ||
40 | {0x00, 0x10, 0x28, 0x10, 0x2c, 0x48, 0x34, 0x00}, | ||
41 | {0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00}, | ||
42 | {0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x10}, | ||
43 | {0x10, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10}, | ||
44 | {0x00, 0x00, 0x28, 0x10, 0x7c, 0x10, 0x28, 0x00}, | ||
45 | {0x00, 0x00, 0x10, 0x10, 0x7c, 0x10, 0x10, 0x00}, | ||
46 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x10, 0x20}, | ||
47 | {0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00}, | ||
48 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00}, | ||
49 | {0x00, 0x04, 0x0c, 0x18, 0x30, 0x60, 0x40, 0x00}, | ||
50 | {0x00, 0x00, 0x38, 0x44, 0x54, 0x44, 0x38, 0x00}, | ||
51 | {0x00, 0x00, 0x30, 0x50, 0x10, 0x10, 0x7c, 0x00}, | ||
52 | {0x00, 0x00, 0x38, 0x04, 0x38, 0x40, 0x7c, 0x00}, | ||
53 | {0x00, 0x00, 0x38, 0x44, 0x18, 0x44, 0x38, 0x00}, | ||
54 | {0x00, 0x00, 0x08, 0x18, 0x28, 0x7c, 0x08, 0x00}, | ||
55 | {0x00, 0x00, 0x7c, 0x40, 0x78, 0x04, 0x78, 0x00}, | ||
56 | {0x00, 0x00, 0x38, 0x40, 0x78, 0x44, 0x38, 0x00}, | ||
57 | {0x00, 0x00, 0x7c, 0x04, 0x08, 0x10, 0x20, 0x00}, | ||
58 | {0x00, 0x00, 0x38, 0x44, 0x38, 0x44, 0x38, 0x00}, | ||
59 | {0x00, 0x00, 0x38, 0x44, 0x3c, 0x04, 0x38, 0x00}, | ||
60 | {0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x00}, | ||
61 | {0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x10, 0x20}, | ||
62 | {0x00, 0x08, 0x10, 0x20, 0x20, 0x10, 0x08, 0x00}, | ||
63 | {0x00, 0x00, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x00}, | ||
64 | {0x00, 0x20, 0x10, 0x08, 0x08, 0x10, 0x20, 0x00}, | ||
65 | {0x00, 0x38, 0x44, 0x04, 0x08, 0x10, 0x00, 0x10}, | ||
66 | {0x00, 0x38, 0x4c, 0x54, 0x58, 0x40, 0x38, 0x00}, | ||
67 | {0x00, 0x38, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x00}, | ||
68 | {0x00, 0x78, 0x44, 0x78, 0x44, 0x44, 0x78, 0x00}, | ||
69 | {0x00, 0x38, 0x44, 0x40, 0x40, 0x44, 0x38, 0x00}, | ||
70 | {0x00, 0x70, 0x48, 0x44, 0x44, 0x48, 0x70, 0x00}, | ||
71 | {0x00, 0x7c, 0x40, 0x78, 0x40, 0x40, 0x7c, 0x00}, | ||
72 | {0x00, 0x7c, 0x40, 0x78, 0x40, 0x40, 0x40, 0x00}, | ||
73 | {0x00, 0x38, 0x44, 0x40, 0x4c, 0x44, 0x38, 0x00}, | ||
74 | {0x00, 0x44, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x00}, | ||
75 | {0x00, 0x7c, 0x10, 0x10, 0x10, 0x10, 0x7c, 0x00}, | ||
76 | {0x00, 0x04, 0x04, 0x04, 0x44, 0x44, 0x38, 0x00}, | ||
77 | {0x00, 0x44, 0x48, 0x50, 0x70, 0x48, 0x44, 0x00}, | ||
78 | {0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7c, 0x00}, | ||
79 | {0x00, 0x44, 0x6c, 0x54, 0x44, 0x44, 0x44, 0x00}, | ||
80 | {0x00, 0x44, 0x64, 0x54, 0x4c, 0x44, 0x44, 0x00}, | ||
81 | {0x00, 0x38, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00}, | ||
82 | {0x00, 0x78, 0x44, 0x44, 0x78, 0x40, 0x40, 0x00}, | ||
83 | {0x00, 0x38, 0x44, 0x44, 0x54, 0x48, 0x34, 0x00}, | ||
84 | {0x00, 0x78, 0x44, 0x44, 0x78, 0x48, 0x44, 0x00}, | ||
85 | {0x00, 0x38, 0x40, 0x38, 0x04, 0x44, 0x38, 0x00}, | ||
86 | {0x00, 0x7c, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00}, | ||
87 | {0x00, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00}, | ||
88 | {0x00, 0x44, 0x44, 0x44, 0x44, 0x28, 0x10, 0x00}, | ||
89 | {0x00, 0x44, 0x44, 0x54, 0x54, 0x54, 0x28, 0x00}, | ||
90 | {0x00, 0x44, 0x28, 0x10, 0x10, 0x28, 0x44, 0x00}, | ||
91 | {0x00, 0x44, 0x44, 0x28, 0x10, 0x10, 0x10, 0x00}, | ||
92 | {0x00, 0x7c, 0x08, 0x10, 0x20, 0x40, 0x7c, 0x00}, | ||
93 | {0x38, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x38}, | ||
94 | {0x00, 0x40, 0x60, 0x30, 0x18, 0x0c, 0x04, 0x00}, | ||
95 | {0x38, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x38}, | ||
96 | {0x10, 0x28, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, | ||
97 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00}, | ||
98 | {0x00, 0x20, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00}, | ||
99 | {0x00, 0x00, 0x38, 0x04, 0x3c, 0x44, 0x3c, 0x00}, | ||
100 | {0x00, 0x40, 0x40, 0x78, 0x44, 0x44, 0x78, 0x00}, | ||
101 | {0x00, 0x00, 0x38, 0x44, 0x40, 0x44, 0x38, 0x00}, | ||
102 | {0x00, 0x04, 0x04, 0x3c, 0x44, 0x44, 0x3c, 0x00}, | ||
103 | {0x00, 0x00, 0x38, 0x44, 0x78, 0x40, 0x3c, 0x00}, | ||
104 | {0x00, 0x00, 0x3c, 0x40, 0x40, 0x78, 0x40, 0x40}, | ||
105 | {0x00, 0x00, 0x3c, 0x44, 0x44, 0x3c, 0x04, 0x38}, | ||
106 | {0x00, 0x40, 0x40, 0x78, 0x44, 0x44, 0x44, 0x00}, | ||
107 | {0x00, 0x10, 0x00, 0x30, 0x10, 0x10, 0x7c, 0x00}, | ||
108 | {0x00, 0x04, 0x00, 0x04, 0x04, 0x04, 0x44, 0x38}, | ||
109 | {0x00, 0x40, 0x48, 0x50, 0x60, 0x50, 0x4c, 0x00}, | ||
110 | {0x00, 0x30, 0x10, 0x10, 0x10, 0x10, 0x7c, 0x00}, | ||
111 | {0x00, 0x00, 0x68, 0x54, 0x54, 0x54, 0x54, 0x00}, | ||
112 | {0x00, 0x00, 0x70, 0x4c, 0x44, 0x44, 0x44, 0x00}, | ||
113 | {0x00, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38, 0x00}, | ||
114 | {0x00, 0x00, 0x78, 0x44, 0x44, 0x78, 0x40, 0x40}, | ||
115 | {0x00, 0x00, 0x3c, 0x44, 0x44, 0x3c, 0x04, 0x0e}, | ||
116 | {0x00, 0x00, 0x58, 0x60, 0x40, 0x40, 0x40, 0x00}, | ||
117 | {0x00, 0x00, 0x38, 0x40, 0x38, 0x04, 0x78, 0x00}, | ||
118 | {0x00, 0x20, 0x7c, 0x20, 0x20, 0x20, 0x18, 0x00}, | ||
119 | {0x00, 0x00, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00}, | ||
120 | {0x00, 0x00, 0x44, 0x44, 0x44, 0x28, 0x10, 0x00}, | ||
121 | {0x00, 0x00, 0x44, 0x44, 0x54, 0x54, 0x28, 0x00}, | ||
122 | {0x00, 0x00, 0x44, 0x28, 0x10, 0x28, 0x44, 0x00}, | ||
123 | {0x00, 0x00, 0x44, 0x44, 0x44, 0x3c, 0x04, 0x38}, | ||
124 | {0x00, 0x00, 0x7c, 0x08, 0x10, 0x20, 0x7c, 0x00}, | ||
125 | {0x18, 0x20, 0x20, 0x40, 0x40, 0x20, 0x20, 0x18}, | ||
126 | {0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10}, | ||
127 | {0x30, 0x08, 0x08, 0x04, 0x04, 0x08, 0x08, 0x30}, | ||
128 | {0x00, 0x00, 0x34, 0x58, 0x00, 0x00, 0x00, 0x00}, | ||
129 | {0x00, 0x00, 0x10, 0x28, 0x44, 0x44, 0x7c, 0x00}, | ||
130 | {0x00, 0x38, 0x44, 0x40, 0x44, 0x38, 0x10, 0x70}, | ||
131 | {0x00, 0x28, 0x00, 0x44, 0x44, 0x44, 0x44, 0x38}, | ||
132 | {0x08, 0x10, 0x00, 0x38, 0x44, 0x78, 0x40, 0x3c}, | ||
133 | {0x10, 0x28, 0x00, 0x38, 0x04, 0x3c, 0x44, 0x3c}, | ||
134 | {0x00, 0x28, 0x00, 0x38, 0x04, 0x3c, 0x44, 0x3c}, | ||
135 | {0x20, 0x10, 0x00, 0x38, 0x04, 0x3c, 0x44, 0x3c}, | ||
136 | {0x10, 0x28, 0x10, 0x38, 0x04, 0x3c, 0x44, 0x3c}, | ||
137 | {0x00, 0x00, 0x38, 0x40, 0x44, 0x38, 0x10, 0x70}, | ||
138 | {0x10, 0x28, 0x00, 0x38, 0x44, 0x78, 0x40, 0x3c}, | ||
139 | {0x00, 0x28, 0x00, 0x38, 0x44, 0x78, 0x40, 0x3c}, | ||
140 | {0x20, 0x10, 0x00, 0x38, 0x44, 0x78, 0x40, 0x3c}, | ||
141 | {0x00, 0x28, 0x00, 0x30, 0x10, 0x10, 0x10, 0x7c}, | ||
142 | {0x00, 0x28, 0x00, 0x30, 0x10, 0x10, 0x10, 0x7c}, | ||
143 | {0x20, 0x10, 0x00, 0x30, 0x10, 0x10, 0x10, 0x7c}, | ||
144 | {0x00, 0x28, 0x00, 0x38, 0x44, 0x7c, 0x44, 0x44}, | ||
145 | {0x10, 0x28, 0x10, 0x38, 0x44, 0x7c, 0x44, 0x44}, | ||
146 | {0x08, 0x10, 0x00, 0x7c, 0x40, 0x78, 0x40, 0x7c}, | ||
147 | {0x00, 0x00, 0x68, 0x14, 0x38, 0x50, 0x2c, 0x00}, | ||
148 | {0x00, 0x3c, 0x50, 0x58, 0x70, 0x50, 0x5c, 0x00}, | ||
149 | {0x10, 0x28, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38}, | ||
150 | {0x00, 0x28, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38}, | ||
151 | {0x20, 0x10, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38}, | ||
152 | {0x10, 0x28, 0x00, 0x44, 0x44, 0x44, 0x44, 0x38}, | ||
153 | {0x20, 0x10, 0x00, 0x44, 0x44, 0x44, 0x44, 0x38}, | ||
154 | {0x00, 0x28, 0x00, 0x44, 0x44, 0x3c, 0x04, 0x38}, | ||
155 | {0x28, 0x00, 0x38, 0x44, 0x44, 0x44, 0x44, 0x38}, | ||
156 | {0x28, 0x00, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38}, | ||
157 | {0x00, 0x10, 0x38, 0x44, 0x40, 0x44, 0x38, 0x10}, | ||
158 | {0x00, 0x18, 0x24, 0x70, 0x20, 0x20, 0x7c, 0x00}, | ||
159 | {0x00, 0x44, 0x28, 0x10, 0x38, 0x10, 0x38, 0x10}, | ||
160 | {0x00, 0x1c, 0x20, 0x78, 0x20, 0x78, 0x20, 0x1c}, | ||
161 | {0x00, 0x0c, 0x10, 0x38, 0x10, 0x10, 0x10, 0x60}, | ||
162 | {0x08, 0x10, 0x00, 0x38, 0x04, 0x3c, 0x44, 0x3c}, | ||
163 | {0x08, 0x10, 0x00, 0x30, 0x10, 0x10, 0x10, 0x7c}, | ||
164 | {0x08, 0x10, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38}, | ||
165 | {0x08, 0x10, 0x00, 0x44, 0x44, 0x44, 0x44, 0x38}, | ||
166 | {0x34, 0x58, 0x00, 0x70, 0x4c, 0x44, 0x44, 0x44}, | ||
167 | {0x34, 0x58, 0x00, 0x44, 0x64, 0x54, 0x4c, 0x44}, | ||
168 | {0x00, 0x38, 0x48, 0x34, 0x00, 0x78, 0x00, 0x00}, | ||
169 | {0x00, 0x30, 0x48, 0x30, 0x00, 0x78, 0x00, 0x00}, | ||
170 | {0x10, 0x00, 0x10, 0x20, 0x40, 0x44, 0x38, 0x00}, | ||
171 | {0x00, 0x00, 0x00, 0x7c, 0x40, 0x40, 0x00, 0x00}, | ||
172 | {0x00, 0x00, 0x00, 0x7c, 0x04, 0x04, 0x00, 0x00}, | ||
173 | {0x60, 0x24, 0x28, 0x16, 0x22, 0x44, 0x0f, 0x00}, | ||
174 | {0x60, 0x24, 0x28, 0x16, 0x2a, 0x4f, 0x02, 0x00}, | ||
175 | {0x10, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00}, | ||
176 | {0x00, 0x12, 0x24, 0x48, 0x24, 0x12, 0x00, 0x00}, | ||
177 | {0x00, 0x48, 0x24, 0x12, 0x24, 0x48, 0x00, 0x00}, | ||
178 | {0x00, 0x11, 0x00, 0x44, 0x00, 0x11, 0x00, 0x44}, | ||
179 | {0xaa, 0x11, 0xaa, 0x44, 0xaa, 0x11, 0xaa, 0x44}, | ||
180 | {0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55}, | ||
181 | {0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10}, | ||
182 | {0x10, 0x10, 0x10, 0xf0, 0x10, 0x10, 0x10, 0x10}, | ||
183 | {0x10, 0x10, 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x10}, | ||
184 | {0x28, 0x28, 0x28, 0xe8, 0x28, 0x28, 0x28, 0x28}, | ||
185 | {0x00, 0x00, 0x00, 0xf8, 0x28, 0x28, 0x28, 0x28}, | ||
186 | {0x00, 0x00, 0xf0, 0x10, 0xf0, 0x10, 0x10, 0x10}, | ||
187 | {0x28, 0x28, 0xe8, 0x08, 0xe8, 0x28, 0x28, 0x28}, | ||
188 | {0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28}, | ||
189 | {0x00, 0x00, 0xf8, 0x08, 0xe8, 0x28, 0x28, 0x28}, | ||
190 | {0x28, 0x28, 0xe8, 0x08, 0xf8, 0x00, 0x00, 0x00}, | ||
191 | {0x28, 0x28, 0x28, 0xf8, 0x00, 0x00, 0x00, 0x00}, | ||
192 | {0x10, 0x10, 0xf0, 0x10, 0xf0, 0x00, 0x00, 0x00}, | ||
193 | {0x00, 0x00, 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10}, | ||
194 | {0x10, 0x10, 0x10, 0x1f, 0x00, 0x00, 0x00, 0x00}, | ||
195 | {0x10, 0x10, 0x10, 0xff, 0x00, 0x00, 0x00, 0x00}, | ||
196 | {0x00, 0x00, 0x00, 0xff, 0x10, 0x10, 0x10, 0x10}, | ||
197 | {0x10, 0x10, 0x10, 0x1f, 0x10, 0x10, 0x10, 0x10}, | ||
198 | {0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00}, | ||
199 | {0x10, 0x10, 0x10, 0xff, 0x10, 0x10, 0x10, 0x10}, | ||
200 | {0x10, 0x10, 0x1f, 0x10, 0x1f, 0x10, 0x10, 0x10}, | ||
201 | {0x28, 0x28, 0x28, 0x2f, 0x28, 0x28, 0x28, 0x28}, | ||
202 | {0x28, 0x28, 0x2f, 0x20, 0x3f, 0x00, 0x00, 0x00}, | ||
203 | {0x00, 0x00, 0x3f, 0x20, 0x2f, 0x28, 0x28, 0x28}, | ||
204 | {0x28, 0x28, 0xef, 0x00, 0xff, 0x00, 0x00, 0x00}, | ||
205 | {0x00, 0x00, 0xff, 0x00, 0xef, 0x28, 0x28, 0x28}, | ||
206 | {0x28, 0x28, 0x2f, 0x20, 0x2f, 0x28, 0x28, 0x28}, | ||
207 | {0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00}, | ||
208 | {0x28, 0x28, 0xef, 0x00, 0xef, 0x28, 0x28, 0x28}, | ||
209 | {0x10, 0x10, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00}, | ||
210 | {0x28, 0x28, 0x28, 0xff, 0x00, 0x00, 0x00, 0x00}, | ||
211 | {0x00, 0x00, 0xff, 0x00, 0xff, 0x10, 0x10, 0x10}, | ||
212 | {0x00, 0x00, 0x00, 0xff, 0x28, 0x28, 0x28, 0x28}, | ||
213 | {0x28, 0x28, 0x28, 0x3f, 0x00, 0x00, 0x00, 0x00}, | ||
214 | {0x10, 0x10, 0x1f, 0x10, 0x1f, 0x00, 0x00, 0x00}, | ||
215 | {0x00, 0x00, 0x1f, 0x10, 0x1f, 0x10, 0x10, 0x10}, | ||
216 | {0x00, 0x00, 0x00, 0x3f, 0x28, 0x28, 0x28, 0x28}, | ||
217 | {0x28, 0x28, 0x28, 0xff, 0x28, 0x28, 0x28, 0x28}, | ||
218 | {0x10, 0x10, 0xff, 0x10, 0xff, 0x10, 0x10, 0x10}, | ||
219 | {0x10, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00}, | ||
220 | {0x00, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10}, | ||
221 | {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, | ||
222 | {0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff}, | ||
223 | {0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0}, | ||
224 | {0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f}, | ||
225 | {0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00}, | ||
226 | {0x00, 0x00, 0x34, 0x48, 0x48, 0x48, 0x34, 0x00}, | ||
227 | {0x00, 0x30, 0x48, 0x50, 0x48, 0x44, 0x5c, 0x40}, | ||
228 | {0x00, 0x7c, 0x44, 0x40, 0x40, 0x40, 0x40, 0x00}, | ||
229 | {0x00, 0x00, 0x7c, 0x28, 0x28, 0x28, 0x28, 0x00}, | ||
230 | {0x7c, 0x44, 0x20, 0x10, 0x20, 0x44, 0x7c, 0x00}, | ||
231 | {0x00, 0x00, 0x3c, 0x48, 0x48, 0x48, 0x30, 0x00}, | ||
232 | {0x00, 0x00, 0x44, 0x44, 0x44, 0x78, 0x40, 0x40}, | ||
233 | {0x00, 0x34, 0x58, 0x10, 0x10, 0x14, 0x08, 0x00}, | ||
234 | {0x38, 0x10, 0x38, 0x44, 0x44, 0x38, 0x10, 0x38}, | ||
235 | {0x38, 0x44, 0x44, 0x7c, 0x44, 0x44, 0x38, 0x00}, | ||
236 | {0x38, 0x44, 0x44, 0x44, 0x44, 0x28, 0x6c, 0x00}, | ||
237 | {0x78, 0x20, 0x18, 0x24, 0x44, 0x44, 0x38, 0x00}, | ||
238 | {0x00, 0x00, 0x28, 0x54, 0x54, 0x28, 0x00, 0x00}, | ||
239 | {0x00, 0x04, 0x28, 0x54, 0x54, 0x28, 0x40, 0x00}, | ||
240 | {0x00, 0x00, 0x3c, 0x40, 0x38, 0x40, 0x3c, 0x00}, | ||
241 | {0x00, 0x38, 0x44, 0x44, 0x44, 0x44, 0x44, 0x40}, | ||
242 | {0x00, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x7c, 0x00}, | ||
243 | {0x00, 0x00, 0x10, 0x38, 0x10, 0x00, 0x38, 0x00}, | ||
244 | {0x20, 0x10, 0x08, 0x10, 0x20, 0x00, 0x38, 0x00}, | ||
245 | {0x08, 0x10, 0x20, 0x10, 0x08, 0x00, 0x38, 0x00}, | ||
246 | {0x0c, 0x12, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10}, | ||
247 | {0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x90, 0x60}, | ||
248 | {0x00, 0x00, 0x10, 0x00, 0x7c, 0x00, 0x10, 0x00}, | ||
249 | {0x00, 0x00, 0x32, 0x4c, 0x00, 0x32, 0x4c, 0x00}, | ||
250 | {0x00, 0x18, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00}, | ||
251 | {0x00, 0x00, 0x38, 0x38, 0x38, 0x00, 0x00, 0x00}, | ||
252 | {0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00}, | ||
253 | {0x00, 0x0f, 0x08, 0x08, 0x08, 0x48, 0x28, 0x18}, | ||
254 | {0x30, 0x2c, 0x24, 0x24, 0x00, 0x00, 0x00, 0x00}, | ||
255 | {0x18, 0x08, 0x10, 0x3c, 0x00, 0x00, 0x00, 0x00}, | ||
256 | {0x00, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x00}, | ||
257 | {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} | ||
258 | }; | ||
@@ -1,4 +1,5 @@ | |||
1 | #include "shorthand.h" | 1 | #include "shorthand.h" |
2 | #include "bd-font.c" | ||
2 | 3 | ||
3 | // | 4 | // |
4 | // Memory sections. | 5 | // Memory sections. |
@@ -40,7 +41,7 @@ | |||
40 | 41 | ||
41 | static inline void | 42 | static inline void |
42 | set_display_mode(u16 value) { | 43 | set_display_mode(u16 value) { |
43 | *((volatile u32*)(MEM_IO + 0x0000)) = value; | 44 | *((vu32*)(MEM_IO + 0x0000)) = value; |
44 | } | 45 | } |
45 | 46 | ||
46 | // | 47 | // |
@@ -58,7 +59,28 @@ rgb15(u32 red, u32 green, u32 blue ) { | |||
58 | 59 | ||
59 | static inline void | 60 | static inline void |
60 | put_pixel(int x, int y, Color clr) { | 61 | put_pixel(int x, int y, Color clr) { |
61 | ((volatile u16*)MEM_VRAM)[x + y * SCREEN_WIDTH] = clr; | 62 | ((vu16*)MEM_VRAM)[x + y * SCREEN_WIDTH] = clr; |
63 | } | ||
64 | |||
65 | // Using bd-font, an 8x8 bitmap font. | ||
66 | static inline void | ||
67 | put_char(int x, int y, Color clr, u8 chr) { | ||
68 | for (size_t i = 0; i < 8; ++i) { | ||
69 | for (size_t j = 0; j < 8; ++j) { | ||
70 | if ((font[chr][i] >> (7 - j)) & 0x1) { | ||
71 | put_pixel(x + j, y + i, clr); | ||
72 | } | ||
73 | } | ||
74 | } | ||
75 | } | ||
76 | |||
77 | static inline void | ||
78 | put_line(int x, int y, Color clr, char *msg) { | ||
79 | int count = 0; | ||
80 | while (*msg) { | ||
81 | put_char(x + count, y, clr, *msg++); | ||
82 | count += 8; | ||
83 | } | ||
62 | } | 84 | } |
63 | 85 | ||
64 | // | 86 | // |
@@ -68,11 +90,12 @@ put_pixel(int x, int y, Color clr) { | |||
68 | int main(void) { | 90 | int main(void) { |
69 | set_display_mode(DISP_MODE_3 | DISP_BG2); | 91 | set_display_mode(DISP_MODE_3 | DISP_BG2); |
70 | 92 | ||
71 | put_pixel(120 , 80, rgb15(31, 0, 0)); | ||
72 | put_pixel(136 , 80, rgb15(0, 31, 0)); | ||
73 | put_pixel(120 , 96, rgb15(0, 0, 31)); | ||
74 | 93 | ||
75 | while(true); | 94 | while(true) { |
95 | put_line(16, 20 + 16, rgb15(28, 0, 0), "Hello world from the GBA!"); | ||
96 | put_line(16, 20 + 32, rgb15(0, 28, 28), "Using my little 8x8 bd-font"); | ||
97 | put_line(16, 20 + 64, rgb15(16, 0, 28), "Isn't that neat? :D"); | ||
98 | }; | ||
76 | 99 | ||
77 | return 0; | 100 | return 0; |
78 | } | 101 | } |