2018-10-29 | Paul Boddie | raw files shortlog changelog graph | Improved the blitting code to permit saving and restoring framebuffer data and for blitting with a key colour for transparency. Introduced a sprite to test the blitting code. Established a function to introduce delays in the example code. | |
examples/vga-dual/Makefile (file) examples/vga-dual/sprite.S (file) examples/vga-pmp/Makefile (file) examples/vga-pmp/sprite.S (file) examples/vga-timer/Makefile (file) examples/vga-timer/sprite.S (file) examples/vga/Makefile (file) examples/vga/main.c (file) examples/vga/sprite.S (file) include/display.h (file) lib/display.c (file) |
1.1 --- a/examples/vga-dual/Makefile Mon Oct 29 01:43:42 2018 +0100 1.2 +++ b/examples/vga-dual/Makefile Mon Oct 29 01:46:31 2018 +0100 1.3 @@ -27,8 +27,8 @@ 1.4 1.5 # Ordering of objects is important and cannot be left to replacement rules. 1.6 1.7 -SRC = $(START_SRC) main.c $(COMMON_SRC) $(DISPLAY_SRC) screendata.S 1.8 -OBJ = $(START_OBJ) main.o $(COMMON_OBJ) $(DISPLAY_OBJ) screendata.o 1.9 +SRC = $(START_SRC) main.c $(COMMON_SRC) $(DISPLAY_SRC) screendata.S sprite.S 1.10 +OBJ = $(START_OBJ) main.o $(COMMON_OBJ) $(DISPLAY_OBJ) screendata.o sprite.o 1.11 1.12 # Application-specific adjustments. 1.13 # See: examples/vga/Makefile
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 2.2 +++ b/examples/vga-dual/sprite.S Mon Oct 29 01:46:31 2018 +0100 2.3 @@ -0,0 +1,1 @@ 2.4 +../vga/sprite.S 2.5 \ No newline at end of file
3.1 --- a/examples/vga-pmp/Makefile Mon Oct 29 01:43:42 2018 +0100 3.2 +++ b/examples/vga-pmp/Makefile Mon Oct 29 01:46:31 2018 +0100 3.3 @@ -27,8 +27,8 @@ 3.4 3.5 # Ordering of objects is important and cannot be left to replacement rules. 3.6 3.7 -SRC = $(START_SRC) main.c $(COMMON_SRC) $(DISPLAY_SRC) screendata.S 3.8 -OBJ = $(START_OBJ) main.o $(COMMON_OBJ) $(DISPLAY_OBJ) screendata.o 3.9 +SRC = $(START_SRC) main.c $(COMMON_SRC) $(DISPLAY_SRC) screendata.S sprite.S 3.10 +OBJ = $(START_OBJ) main.o $(COMMON_OBJ) $(DISPLAY_OBJ) screendata.o sprite.o 3.11 3.12 # Application-specific adjustments. 3.13
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 4.2 +++ b/examples/vga-pmp/sprite.S Mon Oct 29 01:46:31 2018 +0100 4.3 @@ -0,0 +1,1 @@ 4.4 +../vga/sprite.S 4.5 \ No newline at end of file
5.1 --- a/examples/vga-timer/Makefile Mon Oct 29 01:43:42 2018 +0100 5.2 +++ b/examples/vga-timer/Makefile Mon Oct 29 01:46:31 2018 +0100 5.3 @@ -27,8 +27,8 @@ 5.4 5.5 # Ordering of objects is important and cannot be left to replacement rules. 5.6 5.7 -SRC = $(START_SRC) main.c $(COMMON_SRC) $(DISPLAY_SRC) screendata.S 5.8 -OBJ = $(START_OBJ) main.o $(COMMON_OBJ) $(DISPLAY_OBJ) screendata.o 5.9 +SRC = $(START_SRC) main.c $(COMMON_SRC) $(DISPLAY_SRC) screendata.S sprite.S 5.10 +OBJ = $(START_OBJ) main.o $(COMMON_OBJ) $(DISPLAY_OBJ) screendata.o sprite.o 5.11 5.12 # Application-specific adjustments. 5.13 # See: examples/vga/Makefile
6.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 6.2 +++ b/examples/vga-timer/sprite.S Mon Oct 29 01:46:31 2018 +0100 6.3 @@ -0,0 +1,1 @@ 6.4 +../vga/sprite.S 6.5 \ No newline at end of file
7.1 --- a/examples/vga/Makefile Mon Oct 29 01:43:42 2018 +0100 7.2 +++ b/examples/vga/Makefile Mon Oct 29 01:46:31 2018 +0100 7.3 @@ -27,8 +27,8 @@ 7.4 7.5 # Ordering of objects is important and cannot be left to replacement rules. 7.6 7.7 -SRC = $(START_SRC) main.c $(COMMON_SRC) $(DISPLAY_SRC) screendata.S 7.8 -OBJ = $(START_OBJ) main.o $(COMMON_OBJ) $(DISPLAY_OBJ) screendata.o 7.9 +SRC = $(START_SRC) main.c $(COMMON_SRC) $(DISPLAY_SRC) screendata.S sprite.S 7.10 +OBJ = $(START_OBJ) main.o $(COMMON_OBJ) $(DISPLAY_OBJ) screendata.o sprite.o 7.11 7.12 # Application-specific adjustments. 7.13
8.1 --- a/examples/vga/main.c Mon Oct 29 01:43:42 2018 +0100 8.2 +++ b/examples/vga/main.c Mon Oct 29 01:46:31 2018 +0100 8.3 @@ -67,24 +67,32 @@ 8.4 8.5 extern uint8_t screendata[]; 8.6 extern uint32_t screendata_width, screendata_height; 8.7 +extern uint8_t sprite[]; 8.8 +extern uint32_t sprite_width, sprite_height; 8.9 + 8.10 8.11 8.12 +/* Busy wait. */ 8.13 + 8.14 +static void wait(uint32_t delay) 8.15 +{ 8.16 + uint32_t counter = delay; 8.17 + 8.18 + if (!delay) return; 8.19 + while (counter--) __asm__(""); /* retain loop */ 8.20 +} 8.21 8.22 /* Blink an attached LED with delays implemented using a loop. */ 8.23 8.24 static void blink(uint32_t delay, uint32_t port, uint32_t pins) 8.25 { 8.26 - uint32_t counter; 8.27 - 8.28 /* Clear outputs (LED). */ 8.29 8.30 CLR_REG(port, pins); 8.31 8.32 while (1) 8.33 { 8.34 - counter = delay; 8.35 - 8.36 - while (counter--) __asm__(""); /* retain loop */ 8.37 + wait(delay); 8.38 8.39 /* Invert outputs (LED). */ 8.40 8.41 @@ -92,6 +100,31 @@ 8.42 } 8.43 } 8.44 8.45 +/* Move a sprite around on the framebuffer. */ 8.46 + 8.47 +static void animate(uint32_t delay) 8.48 +{ 8.49 + uint8_t background[sprite_width * sprite_height]; 8.50 + int x, y; 8.51 + 8.52 + while (1) 8.53 + for (y = 0; y < screendata_height - sprite_height; y++) 8.54 + for (x = 0; x < screendata_width - sprite_width; x++) 8.55 + { 8.56 + /* Copy to the store from the display, then blit the image. */ 8.57 + 8.58 + copy_display(&display_config, background, sprite_width, sprite_height, x, y, -1, 0); 8.59 + copy_display(&display_config, sprite, sprite_width, sprite_height, x, y, 0x8c, 1); 8.60 + 8.61 + wait(delay); 8.62 + 8.63 + /* Copy to the display from the store, restoring the original 8.64 + background. */ 8.65 + 8.66 + copy_display(&display_config, background, sprite_width, sprite_height, x, y, -1, 1); 8.67 + } 8.68 +} 8.69 + 8.70 8.71 8.72 /* Main program. */ 8.73 @@ -136,8 +169,14 @@ 8.74 8.75 interrupts_on(); 8.76 8.77 - copy_to_framebuffer(&display_config, screendata, screendata_width, screendata_height); 8.78 - blink(1 << 24, PORTA, LED_PIN); 8.79 + /* Plot the image centred on the screen. */ 8.80 + 8.81 + copy_display(&display_config, screendata, screendata_width, screendata_height, 8.82 + (LINE_LENGTH - screendata_width) / 2, (LINE_COUNT - screendata_height) / 2, -1, 1); 8.83 + 8.84 + /* Move a sprite around on the screen with a delay between each movement. */ 8.85 + 8.86 + animate(1 << 24); 8.87 } 8.88 8.89
9.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 9.2 +++ b/examples/vga/sprite.S Mon Oct 29 01:46:31 2018 +0100 9.3 @@ -0,0 +1,1425 @@ 9.4 +.section .rodata, "a" 9.5 + 9.6 +/* Options: 9.7 +['-W', '48', '-H', '64', '-S', '-b'] 9.8 +*/ 9.9 + 9.10 +.globl sprite 9.11 +.globl sprite_width 9.12 +.globl sprite_height 9.13 + 9.14 +sprite_width: 9.15 +.word 22 9.16 +sprite_height: 9.17 +.word 64 9.18 + 9.19 +sprite: 9.20 + 9.21 +.byte 0x8c 9.22 +.byte 0x8c 9.23 +.byte 0x8c 9.24 +.byte 0x8c 9.25 +.byte 0x8c 9.26 +.byte 0x8c 9.27 +.byte 0x8c 9.28 +.byte 0x8c 9.29 +.byte 0x8c 9.30 +.byte 0x8c 9.31 +.byte 0x8c 9.32 +.byte 0x8c 9.33 +.byte 0x8c 9.34 +.byte 0x8c 9.35 +.byte 0x8c 9.36 +.byte 0x8c 9.37 +.byte 0x8c 9.38 +.byte 0x8c 9.39 +.byte 0x8c 9.40 +.byte 0x8c 9.41 +.byte 0x8c 9.42 +.byte 0x8c 9.43 +.byte 0x8c 9.44 +.byte 0x8c 9.45 +.byte 0x8c 9.46 +.byte 0x8c 9.47 +.byte 0x8c 9.48 +.byte 0x8c 9.49 +.byte 0x8c 9.50 +.byte 0x8c 9.51 +.byte 0x8c 9.52 +.byte 0x8c 9.53 +.byte 0x8c 9.54 +.byte 0x8c 9.55 +.byte 0x8c 9.56 +.byte 0x8c 9.57 +.byte 0x80 9.58 +.byte 0x80 9.59 +.byte 0x8c 9.60 +.byte 0x8c 9.61 +.byte 0x8c 9.62 +.byte 0x8c 9.63 +.byte 0x8c 9.64 +.byte 0x8c 9.65 +.byte 0x8c 9.66 +.byte 0x8c 9.67 +.byte 0x8c 9.68 +.byte 0x8c 9.69 +.byte 0x8c 9.70 +.byte 0x8c 9.71 +.byte 0x8c 9.72 +.byte 0x8c 9.73 +.byte 0x8c 9.74 +.byte 0x8c 9.75 +.byte 0x8c 9.76 +.byte 0x8c 9.77 +.byte 0xaa 9.78 +.byte 0x95 9.79 +.byte 0x90 9.80 +.byte 0x90 9.81 +.byte 0x90 9.82 +.byte 0xaa 9.83 +.byte 0x8c 9.84 +.byte 0x8c 9.85 +.byte 0x8c 9.86 +.byte 0x8c 9.87 +.byte 0x8c 9.88 +.byte 0x8c 9.89 +.byte 0x8c 9.90 +.byte 0x8c 9.91 +.byte 0x8c 9.92 +.byte 0x8c 9.93 +.byte 0x8c 9.94 +.byte 0x8c 9.95 +.byte 0x8c 9.96 +.byte 0x8c 9.97 +.byte 0x8c 9.98 +.byte 0xbf 9.99 +.byte 0x3f 9.100 +.byte 0xa5 9.101 +.byte 0xa4 9.102 +.byte 0xa5 9.103 +.byte 0xa5 9.104 +.byte 0x3f 9.105 +.byte 0xbf 9.106 +.byte 0x2a 9.107 +.byte 0x8c 9.108 +.byte 0x8c 9.109 +.byte 0x8c 9.110 +.byte 0x8c 9.111 +.byte 0x8c 9.112 +.byte 0x8c 9.113 +.byte 0x8c 9.114 +.byte 0x8c 9.115 +.byte 0x8c 9.116 +.byte 0x8c 9.117 +.byte 0x8c 9.118 +.byte 0x8c 9.119 +.byte 0xbf 9.120 +.byte 0xbf 9.121 +.byte 0xbf 9.122 +.byte 0xa5 9.123 +.byte 0xb9 9.124 +.byte 0x94 9.125 +.byte 0xbf 9.126 +.byte 0xbf 9.127 +.byte 0xbf 9.128 +.byte 0xbf 9.129 +.byte 0x8c 9.130 +.byte 0x8c 9.131 +.byte 0x8c 9.132 +.byte 0x8c 9.133 +.byte 0x8c 9.134 +.byte 0x8c 9.135 +.byte 0x8c 9.136 +.byte 0x8c 9.137 +.byte 0x8c 9.138 +.byte 0x8c 9.139 +.byte 0x8c 9.140 +.byte 0x8c 9.141 +.byte 0x3f 9.142 +.byte 0xbf 9.143 +.byte 0xbf 9.144 +.byte 0xbe 9.145 +.byte 0xaa 9.146 +.byte 0xbe 9.147 +.byte 0xbf 9.148 +.byte 0xbf 9.149 +.byte 0xbf 9.150 +.byte 0x3f 9.151 +.byte 0x00 9.152 +.byte 0x8c 9.153 +.byte 0x8c 9.154 +.byte 0x8c 9.155 +.byte 0x8c 9.156 +.byte 0x8c 9.157 +.byte 0x8c 9.158 +.byte 0x8c 9.159 +.byte 0x8c 9.160 +.byte 0x8c 9.161 +.byte 0x8c 9.162 +.byte 0x8c 9.163 +.byte 0xbf 9.164 +.byte 0xbf 9.165 +.byte 0xbf 9.166 +.byte 0xbf 9.167 +.byte 0x3f 9.168 +.byte 0xbf 9.169 +.byte 0xbf 9.170 +.byte 0xbf 9.171 +.byte 0xbf 9.172 +.byte 0x3f 9.173 +.byte 0x95 9.174 +.byte 0x8c 9.175 +.byte 0x8c 9.176 +.byte 0x8c 9.177 +.byte 0x8c 9.178 +.byte 0x8c 9.179 +.byte 0x8c 9.180 +.byte 0x8c 9.181 +.byte 0x8c 9.182 +.byte 0x8c 9.183 +.byte 0x8c 9.184 +.byte 0x8c 9.185 +.byte 0xbf 9.186 +.byte 0xbf 9.187 +.byte 0xbf 9.188 +.byte 0xbf 9.189 +.byte 0xbf 9.190 +.byte 0xbf 9.191 +.byte 0xbf 9.192 +.byte 0xbf 9.193 +.byte 0x3f 9.194 +.byte 0xbf 9.195 +.byte 0x80 9.196 +.byte 0x8c 9.197 +.byte 0x8c 9.198 +.byte 0x8c 9.199 +.byte 0x8c 9.200 +.byte 0x8c 9.201 +.byte 0x8c 9.202 +.byte 0x8c 9.203 +.byte 0x8c 9.204 +.byte 0x8c 9.205 +.byte 0x8c 9.206 +.byte 0x8c 9.207 +.byte 0x95 9.208 +.byte 0xbf 9.209 +.byte 0xbf 9.210 +.byte 0xbf 9.211 +.byte 0xbf 9.212 +.byte 0xbf 9.213 +.byte 0xbf 9.214 +.byte 0xbf 9.215 +.byte 0xbf 9.216 +.byte 0xa5 9.217 +.byte 0x80 9.218 +.byte 0x8c 9.219 +.byte 0x8c 9.220 +.byte 0x8c 9.221 +.byte 0x8c 9.222 +.byte 0x8c 9.223 +.byte 0x8c 9.224 +.byte 0x8c 9.225 +.byte 0x8c 9.226 +.byte 0x8c 9.227 +.byte 0x8c 9.228 +.byte 0x8c 9.229 +.byte 0x8c 9.230 +.byte 0xbf 9.231 +.byte 0xaa 9.232 +.byte 0xbf 9.233 +.byte 0xbf 9.234 +.byte 0xbf 9.235 +.byte 0xbf 9.236 +.byte 0xbf 9.237 +.byte 0x80 9.238 +.byte 0x80 9.239 +.byte 0x80 9.240 +.byte 0x8c 9.241 +.byte 0x8c 9.242 +.byte 0x8c 9.243 +.byte 0x8c 9.244 +.byte 0x8c 9.245 +.byte 0x8c 9.246 +.byte 0x8c 9.247 +.byte 0x8c 9.248 +.byte 0x8c 9.249 +.byte 0x8c 9.250 +.byte 0x8c 9.251 +.byte 0x8c 9.252 +.byte 0x80 9.253 +.byte 0xaa 9.254 +.byte 0xbf 9.255 +.byte 0xbf 9.256 +.byte 0xbf 9.257 +.byte 0xba 9.258 +.byte 0x80 9.259 +.byte 0x80 9.260 +.byte 0x80 9.261 +.byte 0x80 9.262 +.byte 0x8c 9.263 +.byte 0x8c 9.264 +.byte 0x8c 9.265 +.byte 0x8c 9.266 +.byte 0x8c 9.267 +.byte 0x8c 9.268 +.byte 0x8c 9.269 +.byte 0x8c 9.270 +.byte 0x8c 9.271 +.byte 0x8c 9.272 +.byte 0x8c 9.273 +.byte 0x8c 9.274 +.byte 0x80 9.275 +.byte 0x95 9.276 +.byte 0xaa 9.277 +.byte 0xa5 9.278 +.byte 0xbe 9.279 +.byte 0x95 9.280 +.byte 0x95 9.281 +.byte 0x90 9.282 +.byte 0x80 9.283 +.byte 0x80 9.284 +.byte 0x8c 9.285 +.byte 0x8c 9.286 +.byte 0x8c 9.287 +.byte 0x8c 9.288 +.byte 0x8c 9.289 +.byte 0x8c 9.290 +.byte 0x8c 9.291 +.byte 0x8c 9.292 +.byte 0x8c 9.293 +.byte 0x8c 9.294 +.byte 0x8c 9.295 +.byte 0x80 9.296 +.byte 0x95 9.297 +.byte 0x95 9.298 +.byte 0xbe 9.299 +.byte 0x95 9.300 +.byte 0xbe 9.301 +.byte 0x2a 9.302 +.byte 0xba 9.303 +.byte 0xa9 9.304 +.byte 0xaa 9.305 +.byte 0xaa 9.306 +.byte 0x8c 9.307 +.byte 0x8c 9.308 +.byte 0x8c 9.309 +.byte 0x8c 9.310 +.byte 0x8c 9.311 +.byte 0x8c 9.312 +.byte 0x8c 9.313 +.byte 0x8c 9.314 +.byte 0x8c 9.315 +.byte 0x8c 9.316 +.byte 0x8c 9.317 +.byte 0x95 9.318 +.byte 0xaa 9.319 +.byte 0xaa 9.320 +.byte 0x95 9.321 +.byte 0x81 9.322 +.byte 0x15 9.323 +.byte 0x15 9.324 +.byte 0xbf 9.325 +.byte 0x3f 9.326 +.byte 0xba 9.327 +.byte 0xaa 9.328 +.byte 0x95 9.329 +.byte 0x8c 9.330 +.byte 0x8c 9.331 +.byte 0x8c 9.332 +.byte 0x8c 9.333 +.byte 0x8c 9.334 +.byte 0x8c 9.335 +.byte 0x8c 9.336 +.byte 0x8c 9.337 +.byte 0x8c 9.338 +.byte 0x8c 9.339 +.byte 0xaa 9.340 +.byte 0xbf 9.341 +.byte 0xbf 9.342 +.byte 0xa6 9.343 +.byte 0x81 9.344 +.byte 0x95 9.345 +.byte 0x95 9.346 +.byte 0xbf 9.347 +.byte 0xbf 9.348 +.byte 0xaa 9.349 +.byte 0xaa 9.350 +.byte 0x95 9.351 +.byte 0x8c 9.352 +.byte 0x8c 9.353 +.byte 0x8c 9.354 +.byte 0x8c 9.355 +.byte 0x8c 9.356 +.byte 0x8c 9.357 +.byte 0x8c 9.358 +.byte 0x8c 9.359 +.byte 0x8c 9.360 +.byte 0x8c 9.361 +.byte 0xba 9.362 +.byte 0x3f 9.363 +.byte 0xbf 9.364 +.byte 0x15 9.365 +.byte 0x81 9.366 +.byte 0x80 9.367 +.byte 0x15 9.368 +.byte 0xbf 9.369 +.byte 0x3f 9.370 +.byte 0x3f 9.371 +.byte 0xba 9.372 +.byte 0x95 9.373 +.byte 0x8c 9.374 +.byte 0x8c 9.375 +.byte 0x8c 9.376 +.byte 0x8c 9.377 +.byte 0x8c 9.378 +.byte 0x8c 9.379 +.byte 0x8c 9.380 +.byte 0x8c 9.381 +.byte 0x8c 9.382 +.byte 0xaa 9.383 +.byte 0xba 9.384 +.byte 0xbf 9.385 +.byte 0xbf 9.386 +.byte 0x95 9.387 +.byte 0x95 9.388 +.byte 0x2a 9.389 +.byte 0xaa 9.390 +.byte 0xbf 9.391 +.byte 0xbf 9.392 +.byte 0xbf 9.393 +.byte 0xbf 9.394 +.byte 0x95 9.395 +.byte 0x8c 9.396 +.byte 0x8c 9.397 +.byte 0x8c 9.398 +.byte 0x8c 9.399 +.byte 0x8c 9.400 +.byte 0x8c 9.401 +.byte 0x8c 9.402 +.byte 0x8c 9.403 +.byte 0xa9 9.404 +.byte 0x95 9.405 +.byte 0xaa 9.406 +.byte 0x3f 9.407 +.byte 0xbf 9.408 +.byte 0x95 9.409 +.byte 0x80 9.410 +.byte 0xaa 9.411 +.byte 0xbf 9.412 +.byte 0xbf 9.413 +.byte 0xbf 9.414 +.byte 0x3f 9.415 +.byte 0xbf 9.416 +.byte 0x95 9.417 +.byte 0x8c 9.418 +.byte 0x8c 9.419 +.byte 0x8c 9.420 +.byte 0x8c 9.421 +.byte 0x8c 9.422 +.byte 0x8c 9.423 +.byte 0x8c 9.424 +.byte 0x95 9.425 +.byte 0x90 9.426 +.byte 0x15 9.427 +.byte 0x95 9.428 +.byte 0xbf 9.429 +.byte 0xbe 9.430 +.byte 0xbf 9.431 +.byte 0xba 9.432 +.byte 0xaa 9.433 +.byte 0xbf 9.434 +.byte 0xbf 9.435 +.byte 0xbf 9.436 +.byte 0xbf 9.437 +.byte 0xbf 9.438 +.byte 0xaa 9.439 +.byte 0x8c 9.440 +.byte 0x8c 9.441 +.byte 0x8c 9.442 +.byte 0x8c 9.443 +.byte 0x8c 9.444 +.byte 0x8c 9.445 +.byte 0x8c 9.446 +.byte 0x95 9.447 +.byte 0x95 9.448 +.byte 0x95 9.449 +.byte 0x90 9.450 +.byte 0xa5 9.451 +.byte 0x94 9.452 +.byte 0x95 9.453 +.byte 0x95 9.454 +.byte 0x95 9.455 +.byte 0xbf 9.456 +.byte 0xbf 9.457 +.byte 0xbf 9.458 +.byte 0xbf 9.459 +.byte 0xbf 9.460 +.byte 0x3f 9.461 +.byte 0x8c 9.462 +.byte 0x8c 9.463 +.byte 0x8c 9.464 +.byte 0x8c 9.465 +.byte 0x8c 9.466 +.byte 0x8c 9.467 +.byte 0x3f 9.468 +.byte 0x95 9.469 +.byte 0x95 9.470 +.byte 0xa5 9.471 +.byte 0x15 9.472 +.byte 0xa5 9.473 +.byte 0x90 9.474 +.byte 0x95 9.475 +.byte 0xbe 9.476 +.byte 0x2a 9.477 +.byte 0xbf 9.478 +.byte 0xbf 9.479 +.byte 0xbf 9.480 +.byte 0xbf 9.481 +.byte 0xbf 9.482 +.byte 0xbf 9.483 +.byte 0x8c 9.484 +.byte 0x8c 9.485 +.byte 0x8c 9.486 +.byte 0x8c 9.487 +.byte 0x8c 9.488 +.byte 0x8c 9.489 +.byte 0xaa 9.490 +.byte 0x95 9.491 +.byte 0x95 9.492 +.byte 0xaa 9.493 +.byte 0x95 9.494 +.byte 0x90 9.495 +.byte 0x90 9.496 +.byte 0xa5 9.497 +.byte 0xbe 9.498 +.byte 0xbf 9.499 +.byte 0xbf 9.500 +.byte 0xbf 9.501 +.byte 0xbf 9.502 +.byte 0xbf 9.503 +.byte 0xbf 9.504 +.byte 0xaa 9.505 +.byte 0x8c 9.506 +.byte 0x8c 9.507 +.byte 0x8c 9.508 +.byte 0x8c 9.509 +.byte 0x8c 9.510 +.byte 0x8c 9.511 +.byte 0xa5 9.512 +.byte 0x95 9.513 +.byte 0x15 9.514 +.byte 0x95 9.515 +.byte 0x95 9.516 +.byte 0x80 9.517 +.byte 0x95 9.518 +.byte 0xbf 9.519 +.byte 0xbf 9.520 +.byte 0xbf 9.521 +.byte 0xbf 9.522 +.byte 0xbf 9.523 +.byte 0xbf 9.524 +.byte 0xbf 9.525 +.byte 0xbf 9.526 +.byte 0xbf 9.527 +.byte 0x8c 9.528 +.byte 0x8c 9.529 +.byte 0x8c 9.530 +.byte 0x8c 9.531 +.byte 0x8c 9.532 +.byte 0x8c 9.533 +.byte 0xa9 9.534 +.byte 0xaa 9.535 +.byte 0xa9 9.536 +.byte 0xa5 9.537 +.byte 0x94 9.538 +.byte 0x95 9.539 +.byte 0x95 9.540 +.byte 0xba 9.541 +.byte 0x3f 9.542 +.byte 0xbf 9.543 +.byte 0xbf 9.544 +.byte 0xbf 9.545 +.byte 0xbf 9.546 +.byte 0xbf 9.547 +.byte 0xbf 9.548 +.byte 0x3f 9.549 +.byte 0x8c 9.550 +.byte 0x8c 9.551 +.byte 0x8c 9.552 +.byte 0x8c 9.553 +.byte 0x8c 9.554 +.byte 0x95 9.555 +.byte 0x95 9.556 +.byte 0x95 9.557 +.byte 0x95 9.558 +.byte 0x95 9.559 +.byte 0x95 9.560 +.byte 0x95 9.561 +.byte 0x95 9.562 +.byte 0x15 9.563 +.byte 0xbe 9.564 +.byte 0xbf 9.565 +.byte 0xbf 9.566 +.byte 0xbf 9.567 +.byte 0xbf 9.568 +.byte 0xbf 9.569 +.byte 0xbf 9.570 +.byte 0xaa 9.571 +.byte 0x8c 9.572 +.byte 0x8c 9.573 +.byte 0x8c 9.574 +.byte 0x8c 9.575 +.byte 0x8c 9.576 +.byte 0x95 9.577 +.byte 0x90 9.578 +.byte 0x95 9.579 +.byte 0xa5 9.580 +.byte 0x95 9.581 +.byte 0x95 9.582 +.byte 0x90 9.583 +.byte 0x95 9.584 +.byte 0x2a 9.585 +.byte 0x3f 9.586 +.byte 0xbf 9.587 +.byte 0xbf 9.588 +.byte 0xbf 9.589 +.byte 0xbf 9.590 +.byte 0xbf 9.591 +.byte 0xbf 9.592 +.byte 0x2a 9.593 +.byte 0x8c 9.594 +.byte 0x8c 9.595 +.byte 0x8c 9.596 +.byte 0x8c 9.597 +.byte 0x8c 9.598 +.byte 0xaa 9.599 +.byte 0xa5 9.600 +.byte 0x95 9.601 +.byte 0x95 9.602 +.byte 0x95 9.603 +.byte 0x90 9.604 +.byte 0x15 9.605 +.byte 0x2a 9.606 +.byte 0xbe 9.607 +.byte 0xbf 9.608 +.byte 0xbf 9.609 +.byte 0xbf 9.610 +.byte 0xbf 9.611 +.byte 0xbf 9.612 +.byte 0xbf 9.613 +.byte 0xbe 9.614 +.byte 0x95 9.615 +.byte 0x8c 9.616 +.byte 0x8c 9.617 +.byte 0x8c 9.618 +.byte 0x8c 9.619 +.byte 0x8c 9.620 +.byte 0x90 9.621 +.byte 0x90 9.622 +.byte 0xaa 9.623 +.byte 0x90 9.624 +.byte 0x90 9.625 +.byte 0x95 9.626 +.byte 0xbf 9.627 +.byte 0x94 9.628 +.byte 0x3f 9.629 +.byte 0xbf 9.630 +.byte 0xbf 9.631 +.byte 0xbf 9.632 +.byte 0xbf 9.633 +.byte 0xbf 9.634 +.byte 0xbf 9.635 +.byte 0xaa 9.636 +.byte 0x2a 9.637 +.byte 0x8c 9.638 +.byte 0x8c 9.639 +.byte 0x8c 9.640 +.byte 0x8c 9.641 +.byte 0x8c 9.642 +.byte 0xaa 9.643 +.byte 0x90 9.644 +.byte 0x90 9.645 +.byte 0x15 9.646 +.byte 0xba 9.647 +.byte 0xba 9.648 +.byte 0xa5 9.649 +.byte 0xa5 9.650 +.byte 0xaa 9.651 +.byte 0xbf 9.652 +.byte 0xbf 9.653 +.byte 0xbf 9.654 +.byte 0xbf 9.655 +.byte 0xbf 9.656 +.byte 0xbf 9.657 +.byte 0xaa 9.658 +.byte 0xa5 9.659 +.byte 0x8c 9.660 +.byte 0x8c 9.661 +.byte 0x8c 9.662 +.byte 0x8c 9.663 +.byte 0xba 9.664 +.byte 0x15 9.665 +.byte 0x90 9.666 +.byte 0x90 9.667 +.byte 0xbf 9.668 +.byte 0xaa 9.669 +.byte 0xaa 9.670 +.byte 0xaa 9.671 +.byte 0xa5 9.672 +.byte 0xbf 9.673 +.byte 0xbf 9.674 +.byte 0xbf 9.675 +.byte 0xbf 9.676 +.byte 0xbf 9.677 +.byte 0x3f 9.678 +.byte 0xbf 9.679 +.byte 0xaa 9.680 +.byte 0x2a 9.681 +.byte 0x8c 9.682 +.byte 0x8c 9.683 +.byte 0x8c 9.684 +.byte 0x8c 9.685 +.byte 0x94 9.686 +.byte 0x90 9.687 +.byte 0x90 9.688 +.byte 0x95 9.689 +.byte 0xbf 9.690 +.byte 0xbf 9.691 +.byte 0xaa 9.692 +.byte 0x90 9.693 +.byte 0x80 9.694 +.byte 0xbf 9.695 +.byte 0xbf 9.696 +.byte 0xbf 9.697 +.byte 0xbf 9.698 +.byte 0xbf 9.699 +.byte 0xaa 9.700 +.byte 0xaa 9.701 +.byte 0xaa 9.702 +.byte 0x8c 9.703 +.byte 0x8c 9.704 +.byte 0x8c 9.705 +.byte 0x8c 9.706 +.byte 0x8c 9.707 +.byte 0x95 9.708 +.byte 0xa5 9.709 +.byte 0x90 9.710 +.byte 0xaa 9.711 +.byte 0xbf 9.712 +.byte 0x3f 9.713 +.byte 0x94 9.714 +.byte 0x80 9.715 +.byte 0xa9 9.716 +.byte 0x00 9.717 +.byte 0x3f 9.718 +.byte 0xbf 9.719 +.byte 0xbf 9.720 +.byte 0x3f 9.721 +.byte 0xaa 9.722 +.byte 0x2a 9.723 +.byte 0x2a 9.724 +.byte 0x8c 9.725 +.byte 0x8c 9.726 +.byte 0x8c 9.727 +.byte 0x8c 9.728 +.byte 0x8c 9.729 +.byte 0x2a 9.730 +.byte 0x90 9.731 +.byte 0x2a 9.732 +.byte 0xbf 9.733 +.byte 0xbf 9.734 +.byte 0xbf 9.735 +.byte 0xaa 9.736 +.byte 0x80 9.737 +.byte 0xa5 9.738 +.byte 0xa5 9.739 +.byte 0xbf 9.740 +.byte 0x3f 9.741 +.byte 0xba 9.742 +.byte 0xbf 9.743 +.byte 0xaa 9.744 +.byte 0xaa 9.745 +.byte 0xaa 9.746 +.byte 0x8c 9.747 +.byte 0x8c 9.748 +.byte 0x8c 9.749 +.byte 0x8c 9.750 +.byte 0x8c 9.751 +.byte 0xaa 9.752 +.byte 0x80 9.753 +.byte 0xa9 9.754 +.byte 0xbf 9.755 +.byte 0xbf 9.756 +.byte 0x3f 9.757 +.byte 0x80 9.758 +.byte 0x80 9.759 +.byte 0x95 9.760 +.byte 0xaa 9.761 +.byte 0xbf 9.762 +.byte 0xbf 9.763 +.byte 0xaa 9.764 +.byte 0xba 9.765 +.byte 0xaa 9.766 +.byte 0x2a 9.767 +.byte 0xaa 9.768 +.byte 0x8c 9.769 +.byte 0x8c 9.770 +.byte 0x8c 9.771 +.byte 0x8c 9.772 +.byte 0x95 9.773 +.byte 0xaa 9.774 +.byte 0x90 9.775 +.byte 0xbf 9.776 +.byte 0x3f 9.777 +.byte 0xbf 9.778 +.byte 0x80 9.779 +.byte 0x90 9.780 +.byte 0x80 9.781 +.byte 0x95 9.782 +.byte 0x3f 9.783 +.byte 0xba 9.784 +.byte 0xba 9.785 +.byte 0xbe 9.786 +.byte 0xaa 9.787 +.byte 0xaa 9.788 +.byte 0x95 9.789 +.byte 0x8c 9.790 +.byte 0x8c 9.791 +.byte 0x8c 9.792 +.byte 0x8c 9.793 +.byte 0x8c 9.794 +.byte 0x2a 9.795 +.byte 0xaa 9.796 +.byte 0x80 9.797 +.byte 0xbf 9.798 +.byte 0xbf 9.799 +.byte 0x80 9.800 +.byte 0x90 9.801 +.byte 0x90 9.802 +.byte 0x90 9.803 +.byte 0xaa 9.804 +.byte 0x3f 9.805 +.byte 0xba 9.806 +.byte 0x3f 9.807 +.byte 0x3f 9.808 +.byte 0xaa 9.809 +.byte 0xa5 9.810 +.byte 0x8c 9.811 +.byte 0x8c 9.812 +.byte 0x8c 9.813 +.byte 0x8c 9.814 +.byte 0x8c 9.815 +.byte 0x8c 9.816 +.byte 0x2a 9.817 +.byte 0x95 9.818 +.byte 0x94 9.819 +.byte 0x90 9.820 +.byte 0x2a 9.821 +.byte 0x90 9.822 +.byte 0xa5 9.823 +.byte 0x80 9.824 +.byte 0x80 9.825 +.byte 0xaa 9.826 +.byte 0xaa 9.827 +.byte 0xba 9.828 +.byte 0xaa 9.829 +.byte 0xaa 9.830 +.byte 0xaa 9.831 +.byte 0x80 9.832 +.byte 0x8c 9.833 +.byte 0x8c 9.834 +.byte 0x8c 9.835 +.byte 0x8c 9.836 +.byte 0x8c 9.837 +.byte 0x8c 9.838 +.byte 0x3f 9.839 +.byte 0x90 9.840 +.byte 0x94 9.841 +.byte 0xbe 9.842 +.byte 0x3f 9.843 +.byte 0xbf 9.844 +.byte 0x80 9.845 +.byte 0x80 9.846 +.byte 0x80 9.847 +.byte 0x3f 9.848 +.byte 0x3f 9.849 +.byte 0xaa 9.850 +.byte 0xaa 9.851 +.byte 0xba 9.852 +.byte 0xaa 9.853 +.byte 0x8c 9.854 +.byte 0x8c 9.855 +.byte 0x8c 9.856 +.byte 0x8c 9.857 +.byte 0x8c 9.858 +.byte 0x8c 9.859 +.byte 0x8c 9.860 +.byte 0x95 9.861 +.byte 0x90 9.862 +.byte 0x90 9.863 +.byte 0x94 9.864 +.byte 0x80 9.865 +.byte 0x80 9.866 +.byte 0x80 9.867 +.byte 0x80 9.868 +.byte 0xba 9.869 +.byte 0xbf 9.870 +.byte 0xba 9.871 +.byte 0xbe 9.872 +.byte 0xaa 9.873 +.byte 0x3f 9.874 +.byte 0x8c 9.875 +.byte 0x8c 9.876 +.byte 0x8c 9.877 +.byte 0x8c 9.878 +.byte 0x8c 9.879 +.byte 0x8c 9.880 +.byte 0x8c 9.881 +.byte 0x8c 9.882 +.byte 0x95 9.883 +.byte 0x90 9.884 +.byte 0x80 9.885 +.byte 0x80 9.886 +.byte 0x80 9.887 +.byte 0x80 9.888 +.byte 0x80 9.889 +.byte 0x80 9.890 +.byte 0xbe 9.891 +.byte 0xbf 9.892 +.byte 0xba 9.893 +.byte 0xaa 9.894 +.byte 0xbf 9.895 +.byte 0x95 9.896 +.byte 0x8c 9.897 +.byte 0x8c 9.898 +.byte 0x8c 9.899 +.byte 0x8c 9.900 +.byte 0x8c 9.901 +.byte 0x8c 9.902 +.byte 0x8c 9.903 +.byte 0x8c 9.904 +.byte 0x8c 9.905 +.byte 0xa9 9.906 +.byte 0x80 9.907 +.byte 0x90 9.908 +.byte 0x80 9.909 +.byte 0x80 9.910 +.byte 0x80 9.911 +.byte 0xbe 9.912 +.byte 0xbf 9.913 +.byte 0xbe 9.914 +.byte 0xaa 9.915 +.byte 0xba 9.916 +.byte 0x95 9.917 +.byte 0x80 9.918 +.byte 0x8c 9.919 +.byte 0x8c 9.920 +.byte 0x8c 9.921 +.byte 0x8c 9.922 +.byte 0x8c 9.923 +.byte 0x8c 9.924 +.byte 0x8c 9.925 +.byte 0x8c 9.926 +.byte 0x8c 9.927 +.byte 0x95 9.928 +.byte 0x95 9.929 +.byte 0x80 9.930 +.byte 0x80 9.931 +.byte 0x94 9.932 +.byte 0x80 9.933 +.byte 0xbf 9.934 +.byte 0xbf 9.935 +.byte 0xbf 9.936 +.byte 0xaa 9.937 +.byte 0x95 9.938 +.byte 0x8c 9.939 +.byte 0x8c 9.940 +.byte 0x8c 9.941 +.byte 0x8c 9.942 +.byte 0x8c 9.943 +.byte 0x8c 9.944 +.byte 0x8c 9.945 +.byte 0x8c 9.946 +.byte 0x8c 9.947 +.byte 0x8c 9.948 +.byte 0x8c 9.949 +.byte 0xaa 9.950 +.byte 0x95 9.951 +.byte 0x80 9.952 +.byte 0x95 9.953 +.byte 0x80 9.954 +.byte 0x95 9.955 +.byte 0xbf 9.956 +.byte 0xbf 9.957 +.byte 0xbf 9.958 +.byte 0xba 9.959 +.byte 0xba 9.960 +.byte 0xa5 9.961 +.byte 0x95 9.962 +.byte 0x95 9.963 +.byte 0x8c 9.964 +.byte 0x8c 9.965 +.byte 0x8c 9.966 +.byte 0x8c 9.967 +.byte 0x8c 9.968 +.byte 0x8c 9.969 +.byte 0x8c 9.970 +.byte 0x8c 9.971 +.byte 0xbe 9.972 +.byte 0x2a 9.973 +.byte 0x80 9.974 +.byte 0x80 9.975 +.byte 0x80 9.976 +.byte 0xaa 9.977 +.byte 0xba 9.978 +.byte 0xbf 9.979 +.byte 0x8c 9.980 +.byte 0xba 9.981 +.byte 0xbe 9.982 +.byte 0xbe 9.983 +.byte 0xba 9.984 +.byte 0x8c 9.985 +.byte 0x8c 9.986 +.byte 0x8c 9.987 +.byte 0x8c 9.988 +.byte 0x8c 9.989 +.byte 0x8c 9.990 +.byte 0x8c 9.991 +.byte 0x8c 9.992 +.byte 0x80 9.993 +.byte 0xaa 9.994 +.byte 0x2a 9.995 +.byte 0xa5 9.996 +.byte 0x15 9.997 +.byte 0x8c 9.998 +.byte 0x95 9.999 +.byte 0x95 9.1000 +.byte 0x8c 9.1001 +.byte 0x8c 9.1002 +.byte 0x8c 9.1003 +.byte 0x8c 9.1004 +.byte 0x8c 9.1005 +.byte 0x8c 9.1006 +.byte 0x8c 9.1007 +.byte 0x8c 9.1008 +.byte 0x8c 9.1009 +.byte 0x8c 9.1010 +.byte 0x8c 9.1011 +.byte 0x8c 9.1012 +.byte 0x8c 9.1013 +.byte 0x8c 9.1014 +.byte 0x15 9.1015 +.byte 0xa5 9.1016 +.byte 0x80 9.1017 +.byte 0x80 9.1018 +.byte 0x80 9.1019 +.byte 0x8c 9.1020 +.byte 0x8c 9.1021 +.byte 0xa6 9.1022 +.byte 0x8c 9.1023 +.byte 0x8c 9.1024 +.byte 0x8c 9.1025 +.byte 0x8c 9.1026 +.byte 0x8c 9.1027 +.byte 0x8c 9.1028 +.byte 0x8c 9.1029 +.byte 0x8c 9.1030 +.byte 0x8c 9.1031 +.byte 0x8c 9.1032 +.byte 0x8c 9.1033 +.byte 0x8c 9.1034 +.byte 0x8c 9.1035 +.byte 0x8c 9.1036 +.byte 0x8c 9.1037 +.byte 0x80 9.1038 +.byte 0x80 9.1039 +.byte 0x80 9.1040 +.byte 0x90 9.1041 +.byte 0x8c 9.1042 +.byte 0x8c 9.1043 +.byte 0x8c 9.1044 +.byte 0x8c 9.1045 +.byte 0x8c 9.1046 +.byte 0x8c 9.1047 +.byte 0x8c 9.1048 +.byte 0x8c 9.1049 +.byte 0x8c 9.1050 +.byte 0x8c 9.1051 +.byte 0x8c 9.1052 +.byte 0x8c 9.1053 +.byte 0x8c 9.1054 +.byte 0x8c 9.1055 +.byte 0x8c 9.1056 +.byte 0x8c 9.1057 +.byte 0x8c 9.1058 +.byte 0x8c 9.1059 +.byte 0x80 9.1060 +.byte 0x80 9.1061 +.byte 0x80 9.1062 +.byte 0x8c 9.1063 +.byte 0x8c 9.1064 +.byte 0x8c 9.1065 +.byte 0x8c 9.1066 +.byte 0x8c 9.1067 +.byte 0x8c 9.1068 +.byte 0x8c 9.1069 +.byte 0x8c 9.1070 +.byte 0x8c 9.1071 +.byte 0x8c 9.1072 +.byte 0x8c 9.1073 +.byte 0x8c 9.1074 +.byte 0x8c 9.1075 +.byte 0x8c 9.1076 +.byte 0x8c 9.1077 +.byte 0x8c 9.1078 +.byte 0x8c 9.1079 +.byte 0x8c 9.1080 +.byte 0x8c 9.1081 +.byte 0x80 9.1082 +.byte 0x80 9.1083 +.byte 0x95 9.1084 +.byte 0x8c 9.1085 +.byte 0x8c 9.1086 +.byte 0x8c 9.1087 +.byte 0x8c 9.1088 +.byte 0x8c 9.1089 +.byte 0x8c 9.1090 +.byte 0x8c 9.1091 +.byte 0x8c 9.1092 +.byte 0x8c 9.1093 +.byte 0x8c 9.1094 +.byte 0x8c 9.1095 +.byte 0x8c 9.1096 +.byte 0x8c 9.1097 +.byte 0x8c 9.1098 +.byte 0x8c 9.1099 +.byte 0x8c 9.1100 +.byte 0x8c 9.1101 +.byte 0x8c 9.1102 +.byte 0x8c 9.1103 +.byte 0x80 9.1104 +.byte 0x80 9.1105 +.byte 0x8c 9.1106 +.byte 0x8c 9.1107 +.byte 0x8c 9.1108 +.byte 0x8c 9.1109 +.byte 0x8c 9.1110 +.byte 0x8c 9.1111 +.byte 0x8c 9.1112 +.byte 0x8c 9.1113 +.byte 0x8c 9.1114 +.byte 0x8c 9.1115 +.byte 0x8c 9.1116 +.byte 0x8c 9.1117 +.byte 0x8c 9.1118 +.byte 0x8c 9.1119 +.byte 0x8c 9.1120 +.byte 0x8c 9.1121 +.byte 0x8c 9.1122 +.byte 0x8c 9.1123 +.byte 0x8c 9.1124 +.byte 0x8c 9.1125 +.byte 0x80 9.1126 +.byte 0x95 9.1127 +.byte 0x8c 9.1128 +.byte 0x8c 9.1129 +.byte 0x8c 9.1130 +.byte 0x8c 9.1131 +.byte 0x8c 9.1132 +.byte 0x8c 9.1133 +.byte 0x8c 9.1134 +.byte 0x8c 9.1135 +.byte 0x8c 9.1136 +.byte 0x8c 9.1137 +.byte 0x8c 9.1138 +.byte 0x8c 9.1139 +.byte 0x8c 9.1140 +.byte 0x8c 9.1141 +.byte 0x8c 9.1142 +.byte 0x8c 9.1143 +.byte 0x8c 9.1144 +.byte 0x8c 9.1145 +.byte 0x8c 9.1146 +.byte 0x8c 9.1147 +.byte 0x80 9.1148 +.byte 0x8c 9.1149 +.byte 0x8c 9.1150 +.byte 0x8c 9.1151 +.byte 0x8c 9.1152 +.byte 0x8c 9.1153 +.byte 0x8c 9.1154 +.byte 0x8c 9.1155 +.byte 0x8c 9.1156 +.byte 0x8c 9.1157 +.byte 0x8c 9.1158 +.byte 0x8c 9.1159 +.byte 0x8c 9.1160 +.byte 0x8c 9.1161 +.byte 0x8c 9.1162 +.byte 0x8c 9.1163 +.byte 0x8c 9.1164 +.byte 0x8c 9.1165 +.byte 0x8c 9.1166 +.byte 0x8c 9.1167 +.byte 0x8c 9.1168 +.byte 0xaa 9.1169 +.byte 0x90 9.1170 +.byte 0x8c 9.1171 +.byte 0x8c 9.1172 +.byte 0x8c 9.1173 +.byte 0x8c 9.1174 +.byte 0x8c 9.1175 +.byte 0x8c 9.1176 +.byte 0x8c 9.1177 +.byte 0x8c 9.1178 +.byte 0x8c 9.1179 +.byte 0x8c 9.1180 +.byte 0x8c 9.1181 +.byte 0x8c 9.1182 +.byte 0x8c 9.1183 +.byte 0x8c 9.1184 +.byte 0x8c 9.1185 +.byte 0x8c 9.1186 +.byte 0x8c 9.1187 +.byte 0x8c 9.1188 +.byte 0x8c 9.1189 +.byte 0x8c 9.1190 +.byte 0x95 9.1191 +.byte 0xbf 9.1192 +.byte 0x8c 9.1193 +.byte 0x8c 9.1194 +.byte 0x8c 9.1195 +.byte 0x8c 9.1196 +.byte 0x8c 9.1197 +.byte 0x8c 9.1198 +.byte 0x8c 9.1199 +.byte 0x8c 9.1200 +.byte 0x8c 9.1201 +.byte 0x8c 9.1202 +.byte 0x8c 9.1203 +.byte 0x8c 9.1204 +.byte 0x8c 9.1205 +.byte 0x8c 9.1206 +.byte 0x8c 9.1207 +.byte 0x8c 9.1208 +.byte 0x8c 9.1209 +.byte 0x8c 9.1210 +.byte 0x8c 9.1211 +.byte 0x8c 9.1212 +.byte 0x90 9.1213 +.byte 0x80 9.1214 +.byte 0x8c 9.1215 +.byte 0x8c 9.1216 +.byte 0x8c 9.1217 +.byte 0x8c 9.1218 +.byte 0x8c 9.1219 +.byte 0x8c 9.1220 +.byte 0x8c 9.1221 +.byte 0x8c 9.1222 +.byte 0x8c 9.1223 +.byte 0x8c 9.1224 +.byte 0x8c 9.1225 +.byte 0x8c 9.1226 +.byte 0x8c 9.1227 +.byte 0x8c 9.1228 +.byte 0x8c 9.1229 +.byte 0x8c 9.1230 +.byte 0x8c 9.1231 +.byte 0x8c 9.1232 +.byte 0x8c 9.1233 +.byte 0x8c 9.1234 +.byte 0x80 9.1235 +.byte 0x8c 9.1236 +.byte 0x8c 9.1237 +.byte 0x8c 9.1238 +.byte 0x8c 9.1239 +.byte 0x8c 9.1240 +.byte 0x8c 9.1241 +.byte 0x8c 9.1242 +.byte 0x8c 9.1243 +.byte 0x8c 9.1244 +.byte 0x8c 9.1245 +.byte 0x8c 9.1246 +.byte 0x8c 9.1247 +.byte 0x8c 9.1248 +.byte 0x8c 9.1249 +.byte 0x8c 9.1250 +.byte 0x8c 9.1251 +.byte 0x8c 9.1252 +.byte 0x8c 9.1253 +.byte 0x8c 9.1254 +.byte 0x8c 9.1255 +.byte 0xbf 9.1256 +.byte 0xb9 9.1257 +.byte 0x8c 9.1258 +.byte 0x8c 9.1259 +.byte 0x8c 9.1260 +.byte 0x8c 9.1261 +.byte 0x8c 9.1262 +.byte 0x8c 9.1263 +.byte 0x8c 9.1264 +.byte 0x8c 9.1265 +.byte 0x8c 9.1266 +.byte 0x8c 9.1267 +.byte 0x8c 9.1268 +.byte 0x8c 9.1269 +.byte 0x8c 9.1270 +.byte 0x8c 9.1271 +.byte 0x8c 9.1272 +.byte 0x8c 9.1273 +.byte 0x8c 9.1274 +.byte 0x8c 9.1275 +.byte 0x8c 9.1276 +.byte 0x8c 9.1277 +.byte 0xa5 9.1278 +.byte 0xbf 9.1279 +.byte 0x8c 9.1280 +.byte 0x8c 9.1281 +.byte 0x8c 9.1282 +.byte 0x8c 9.1283 +.byte 0x8c 9.1284 +.byte 0x8c 9.1285 +.byte 0x8c 9.1286 +.byte 0x8c 9.1287 +.byte 0x8c 9.1288 +.byte 0x8c 9.1289 +.byte 0x8c 9.1290 +.byte 0x8c 9.1291 +.byte 0x8c 9.1292 +.byte 0x8c 9.1293 +.byte 0x8c 9.1294 +.byte 0x8c 9.1295 +.byte 0x8c 9.1296 +.byte 0x8c 9.1297 +.byte 0x8c 9.1298 +.byte 0x8c 9.1299 +.byte 0x90 9.1300 +.byte 0x15 9.1301 +.byte 0x8c 9.1302 +.byte 0x8c 9.1303 +.byte 0x8c 9.1304 +.byte 0x8c 9.1305 +.byte 0x8c 9.1306 +.byte 0x8c 9.1307 +.byte 0x8c 9.1308 +.byte 0x8c 9.1309 +.byte 0x8c 9.1310 +.byte 0x8c 9.1311 +.byte 0x8c 9.1312 +.byte 0x8c 9.1313 +.byte 0x8c 9.1314 +.byte 0x8c 9.1315 +.byte 0x8c 9.1316 +.byte 0x8c 9.1317 +.byte 0x8c 9.1318 +.byte 0x8c 9.1319 +.byte 0x8c 9.1320 +.byte 0x8c 9.1321 +.byte 0x95 9.1322 +.byte 0x8c 9.1323 +.byte 0x8c 9.1324 +.byte 0x8c 9.1325 +.byte 0x8c 9.1326 +.byte 0x8c 9.1327 +.byte 0x8c 9.1328 +.byte 0x8c 9.1329 +.byte 0x8c 9.1330 +.byte 0x8c 9.1331 +.byte 0x8c 9.1332 +.byte 0x8c 9.1333 +.byte 0x8c 9.1334 +.byte 0x8c 9.1335 +.byte 0x8c 9.1336 +.byte 0x8c 9.1337 +.byte 0x8c 9.1338 +.byte 0x8c 9.1339 +.byte 0x8c 9.1340 +.byte 0x8c 9.1341 +.byte 0x8c 9.1342 +.byte 0x8c 9.1343 +.byte 0xaa 9.1344 +.byte 0x8c 9.1345 +.byte 0x8c 9.1346 +.byte 0x8c 9.1347 +.byte 0x8c 9.1348 +.byte 0x8c 9.1349 +.byte 0x8c 9.1350 +.byte 0x8c 9.1351 +.byte 0x8c 9.1352 +.byte 0x8c 9.1353 +.byte 0x8c 9.1354 +.byte 0x8c 9.1355 +.byte 0x8c 9.1356 +.byte 0x8c 9.1357 +.byte 0x8c 9.1358 +.byte 0x8c 9.1359 +.byte 0x8c 9.1360 +.byte 0x8c 9.1361 +.byte 0x8c 9.1362 +.byte 0x8c 9.1363 +.byte 0x8c 9.1364 +.byte 0xbe 9.1365 +.byte 0xaa 9.1366 +.byte 0x8c 9.1367 +.byte 0x8c 9.1368 +.byte 0x8c 9.1369 +.byte 0x8c 9.1370 +.byte 0x8c 9.1371 +.byte 0x8c 9.1372 +.byte 0x8c 9.1373 +.byte 0x8c 9.1374 +.byte 0x8c 9.1375 +.byte 0x8c 9.1376 +.byte 0x8c 9.1377 +.byte 0x8c 9.1378 +.byte 0x8c 9.1379 +.byte 0x8c 9.1380 +.byte 0x8c 9.1381 +.byte 0x8c 9.1382 +.byte 0x8c 9.1383 +.byte 0x8c 9.1384 +.byte 0x8c 9.1385 +.byte 0x8c 9.1386 +.byte 0x8c 9.1387 +.byte 0x8c 9.1388 +.byte 0x8c 9.1389 +.byte 0x8c 9.1390 +.byte 0x8c 9.1391 +.byte 0x8c 9.1392 +.byte 0x8c 9.1393 +.byte 0x8c 9.1394 +.byte 0x8c 9.1395 +.byte 0x8c 9.1396 +.byte 0x8c 9.1397 +.byte 0x8c 9.1398 +.byte 0x8c 9.1399 +.byte 0x8c 9.1400 +.byte 0x8c 9.1401 +.byte 0x8c 9.1402 +.byte 0x8c 9.1403 +.byte 0x8c 9.1404 +.byte 0x8c 9.1405 +.byte 0x8c 9.1406 +.byte 0x8c 9.1407 +.byte 0x8c 9.1408 +.byte 0x8c 9.1409 +.byte 0x8c 9.1410 +.byte 0x8c 9.1411 +.byte 0x8c 9.1412 +.byte 0x8c 9.1413 +.byte 0x8c 9.1414 +.byte 0x8c 9.1415 +.byte 0x8c 9.1416 +.byte 0x8c 9.1417 +.byte 0x8c 9.1418 +.byte 0x8c 9.1419 +.byte 0x8c 9.1420 +.byte 0x8c 9.1421 +.byte 0x8c 9.1422 +.byte 0x8c 9.1423 +.byte 0x8c 9.1424 +.byte 0x8c 9.1425 +.byte 0x8c 9.1426 +.byte 0x8c 9.1427 +.byte 0x8c 9.1428 +.byte 0x8c
10.1 --- a/include/display.h Mon Oct 29 01:43:42 2018 +0100 10.2 +++ b/include/display.h Mon Oct 29 01:46:31 2018 +0100 10.3 @@ -65,7 +65,10 @@ 10.4 /* Access functions. */ 10.5 10.6 int get_position(display_config_t *cfg, int x); 10.7 + 10.8 void test_linedata(display_config_t *cfg); 10.9 -void copy_to_framebuffer(display_config_t *cfg, uint8_t *image, int width, int height); 10.10 + 10.11 +void copy_display(display_config_t *cfg, uint8_t *store, int width, int height, 10.12 + int x, int y, int key, int to_display); 10.13 10.14 #endif /* __DISPLAY_H__ */
11.1 --- a/lib/display.c Mon Oct 29 01:43:42 2018 +0100 11.2 +++ b/lib/display.c Mon Oct 29 01:46:31 2018 +0100 11.3 @@ -55,21 +55,31 @@ 11.4 } 11.5 } 11.6 11.7 -/* Copy to framebuffer. */ 11.8 +/* Copying from/to the display to/from a backing store. */ 11.9 11.10 -void copy_to_framebuffer(display_config_t *cfg, uint8_t *image, int width, int height) 11.11 +void copy_display(display_config_t *cfg, uint8_t *store, int width, int height, 11.12 + int x, int y, int key, int to_display) 11.13 { 11.14 - int sx, sy, tx, ty; 11.15 - uint8_t *targetline = cfg->framebuffer, *sourceline = image; 11.16 + int sx, sy, dx, dy; 11.17 + uint8_t *storeline = store, 11.18 + *displayline = cfg->framebuffer + y * cfg->line_length, 11.19 + pixel; 11.20 11.21 - for (sy = 0, ty = 0; (sy < height) && (ty < cfg->line_count); sy++, ty++) 11.22 + for (sy = 0, dy = y; (sy < height) && (dy < cfg->line_count); sy++, dy++) 11.23 { 11.24 - for (sx = 0, tx = 0; (tx < cfg->line_length); sx++, tx++) 11.25 + for (sx = 0, dx = x; (sx < width) && (dx < cfg->line_length); sx++, dx++) 11.26 { 11.27 - targetline[get_position(cfg, tx)] = (sx < width) ? sourceline[sx] : 0; 11.28 + if (to_display) 11.29 + { 11.30 + pixel = storeline[sx]; 11.31 + if ((key < 0) || (pixel != key)) 11.32 + displayline[get_position(cfg, dx)] = pixel; 11.33 + } 11.34 + else 11.35 + storeline[sx] = displayline[get_position(cfg, dx)]; 11.36 } 11.37 11.38 - sourceline += width; 11.39 - targetline += cfg->line_length; 11.40 + storeline += width; 11.41 + displayline += cfg->line_length; 11.42 } 11.43 }