OSDN Git Service

AI003:config.txt, words.txtを追加。
[chnosproject/CHNOSProject.git] / CHNOSProject / chnos / tolset_chn_000 / chnos_008 / chnos / graphic.c
1 \r
2 #include "core.h"\r
3 \r
4 /*ColorTable*/\r
5 uint rgb_int2char_list [16] = {\r
6         0x000000,\r
7         0xff0000,\r
8         0x00ff00,\r
9         0xffff00,\r
10         0x0000ff,\r
11         0xff00ff,\r
12         0x00ffff,\r
13         0xffffff,\r
14         0xc6c6c6,\r
15         0x840000,\r
16         0x008400,\r
17         0x848400,\r
18         0x000084,\r
19         0x840084,\r
20         0x008484,\r
21         0x848484\r
22 };\r
23 char cursor[24][24] = {\r
24         "***.....................",\r
25         "*O**....................",\r
26         "*OO**...................",\r
27         "*OOO**..................",\r
28         "*OOOO**.................",\r
29         "*OOOOO**................",\r
30         "*OOOOOO**...............",\r
31         "*OOOOOOO**..............",\r
32         "*OOOOOOOO**.............",\r
33         "*OOOOOOOOO**............",\r
34         "*OOOOOOOOOO**...........",\r
35         "*OOOOOOOOOOO**..........",\r
36         "*OOOOOOOOOOOO**.........",\r
37         "*OOOOOOOOOOOOO**........",\r
38         "*OOOOOOOOOOOOOO**.......",\r
39         "*OOOOOOOOOOOOOOO**......",\r
40         "*OOOOOOOOOOOOOOOO**.....",\r
41         "*OOOOOO*************....",\r
42         "*OOOOO**................",\r
43         "*OOOO**.................",\r
44         "*OOO**..................",\r
45         "*OO**...................",\r
46         "*O**....................",\r
47         "***.....................",\r
48 };\r
49 \r
50 void putfonts_asc_sht_i(UI_Sheet *sht, int x, int y, uint c, uint bc, const uchar *s)\r
51 {\r
52         int l;\r
53         l = strlen(s);\r
54         boxfill_i(sht->buf, sht->bxsize, bc, x, y, x + l * 8, y + 16);\r
55         putfonts_asc_i(sht->buf, sht->bxsize, x, y, c, s);\r
56         sheet_refresh(sht, x, y, x + l * 8, y + 16);\r
57         return;\r
58 }\r
59 \r
60 void putfonts_asc_sht_i_no_bc(UI_Sheet *sht, int x, int y, uint c, const uchar *s)\r
61 {\r
62         int l;\r
63         l = strlen(s);\r
64         putfonts_asc_i(sht->buf, sht->bxsize, x, y, c, s);\r
65         sheet_refresh(sht, x, y, x + l * 8, y + 16);\r
66         return;\r
67 }\r
68 \r
69 void init_screen_i(void *desktop, void *taskbar, void *mousecursor)\r
70 {\r
71         uchar bpp;\r
72 \r
73         bpp = system.data.info.vesa.BitsPerPixel;\r
74 \r
75         if(bpp == 8){\r
76                 init_palette();\r
77         }\r
78         init_desktop_i(desktop);\r
79         init_taskbar_i(taskbar);\r
80         init_mousecursor_i(mousecursor);\r
81 \r
82         return;\r
83 }\r
84 \r
85 void init_desktop_i(void *vrami)\r
86 {\r
87         uchar bpp;\r
88         uint xsize, ysize;\r
89 \r
90         bpp = system.data.info.vesa.BitsPerPixel;\r
91         xsize = system.data.info.boot.scrnx;\r
92         ysize = system.data.info.boot.scrny;\r
93 \r
94         if(bpp == 8){\r
95                 init_desktop8(vrami, xsize, ysize);\r
96         } else if(bpp == 16){\r
97                 init_desktop16(vrami, xsize, ysize);\r
98         } else if(bpp == 32){\r
99                 init_desktop32(vrami, xsize, ysize);\r
100         }\r
101         return; \r
102 }\r
103 \r
104 void init_taskbar_i(void *vrami)\r
105 {\r
106         uchar bpp;\r
107         uint xsize;\r
108 \r
109         bpp = system.data.info.vesa.BitsPerPixel;\r
110         xsize = system.data.info.boot.scrnx;\r
111 \r
112         if(bpp == 8){\r
113                 init_taskbar8(vrami, xsize);\r
114         } else if(bpp == 16){\r
115                 init_taskbar16(vrami, xsize);\r
116         } else if(bpp == 32){\r
117                 init_taskbar32(vrami, xsize);\r
118         }\r
119         return; \r
120 }\r
121 \r
122 void init_mousecursor_i(void *vrami)\r
123 {\r
124         uchar bpp;\r
125 \r
126         bpp = system.data.info.vesa.BitsPerPixel;\r
127 \r
128         if(bpp == 8){\r
129                 init_mouse_cursor8(vrami);\r
130         } else if(bpp == 16){\r
131                 init_mouse_cursor16(vrami);\r
132         } else if(bpp == 32){\r
133                 init_mouse_cursor32(vrami);\r
134         }\r
135         return; \r
136 }\r
137 \r
138 uint mix_color(uint c0, uint c1)\r
139 {\r
140         float r0,g0,b0,r1,g1,b1,alpha;\r
141         uint cc;\r
142 \r
143         cc = c0 << 24;\r
144         b0 = (float)(cc >> 24);\r
145         cc = c0 << 16;\r
146         g0 = (float)(cc >> 24);\r
147         cc = c0 << 8;\r
148         r0 = (float)(cc >> 24);\r
149 \r
150         cc = c1 << 24;\r
151         b1 = (float)(cc >> 24);\r
152         cc = c1 << 16;\r
153         g1 = (float)(c1 >> 24);\r
154         cc = c1 << 8;\r
155         r1 = (float)(c1 >> 24);\r
156 \r
157         alpha = (float)(c1 >> 24);\r
158 \r
159         r1 = r1 * (alpha / 255) + r0 * (1 - (alpha / 255));\r
160         g1 = g1 * (alpha / 255) + g0 * (1 - (alpha / 255));\r
161         b1 = b1 * (alpha / 255) + b0 * (1 - (alpha / 255));\r
162 \r
163         c1 = (uint) alpha;\r
164         c1 = c1 << 8;\r
165         c1 += (uint) r1;\r
166         c1 = c1 << 8;\r
167         c1 += (uint) g1;\r
168         c1 = c1 << 8;\r
169         c1 += (uint) b1;\r
170 \r
171         return c1;\r
172 }\r
173 \r
174 void point_i(void *vrami, int x, int y, uint c, int xsize)\r
175 {\r
176         uint cc = 0x00000000;\r
177 \r
178         if(system.data.info.vesa.BitsPerPixel == 8){\r
179                 cc = rgb_int2char(c);\r
180         } else if(system.data.info.vesa.BitsPerPixel == 16){\r
181                 cc = rgb_int2short(c);\r
182         } else if(system.data.info.vesa.BitsPerPixel == 32){\r
183                 cc = c;\r
184         }\r
185         point_bpp(vrami, x, y, cc, xsize, system.data.info.vesa.BitsPerPixel);\r
186         return;\r
187 }\r
188 \r
189 void point_bpp(void *vrami, int x, int y, uint c, int xsize, uint bpp)\r
190 {\r
191         uchar *buf8;\r
192         ushort *buf16;\r
193         uint *buf32;\r
194 \r
195         if(bpp == 8){\r
196                 buf8 = vrami;\r
197                 buf8[y * xsize + x] = (uchar)c;\r
198         } else if(bpp == 16){\r
199                 buf16 = vrami;\r
200                 buf16[y * xsize + x] = (ushort)c;\r
201         } else if(bpp == 32){\r
202                 buf32 = vrami;\r
203                 buf32[y * xsize + x] = (uint)c;\r
204         }\r
205 \r
206         return;\r
207 }\r
208 \r
209 void boxfill_i(void *vrami, int xsize, uint c, int x0, int y0, int x1, int y1)\r
210 {\r
211         uint cc = 0x00000000;\r
212 \r
213         if(system.data.info.vesa.BitsPerPixel == 8){\r
214                 cc = rgb_int2char(c);\r
215         } else if(system.data.info.vesa.BitsPerPixel == 16){\r
216                 cc = rgb_int2short(c);\r
217         } else if(system.data.info.vesa.BitsPerPixel == 32){\r
218                 cc = c;\r
219         }\r
220         boxfill_bpp(vrami, xsize, cc, x0, y0, x1, y1, system.data.info.vesa.BitsPerPixel);\r
221         return;\r
222 }\r
223 \r
224 void boxfill_bpp(void *vrami, int xsize, uint c, int x0, int y0, int x1, int y1, uint bpp)\r
225 {\r
226         if(bpp == 8){\r
227                 boxfill8(vrami, xsize, c, x0, y0, x1, y1);      \r
228         } else if(bpp == 16){\r
229                 boxfill16(vrami, xsize, c, x0, y0, x1, y1);\r
230         } else if(bpp == 32){\r
231                 boxfill32(vrami, xsize, c, x0, y0, x1, y1);\r
232         }\r
233 \r
234         return;\r
235 }\r
236 \r
237 void putfonts_asc_i(void *vrami, int xsize, int x, int y, uint c, const uchar *s)\r
238 {\r
239         if(system.data.info.vesa.BitsPerPixel == 8){\r
240                 uchar c8 = rgb_int2char(c);\r
241                 for (; *s != 0x00; s++) {\r
242                         putfont8(vrami, xsize, x, y, c8, hankaku + *s * 16);\r
243                         x += 8;\r
244                 }\r
245                 return;\r
246         } else if(system.data.info.vesa.BitsPerPixel == 16){\r
247                 ushort c16 = rgb_int2short(c);\r
248                 for (; *s != 0x00; s++) {\r
249                         putfont16(vrami, xsize, x, y, c16, hankaku + *s * 16);\r
250                         x += 8;\r
251                 }\r
252                 return;\r
253         } else if(system.data.info.vesa.BitsPerPixel == 32){\r
254                 for (; *s != 0x00; s++) {\r
255                         putfont32(vrami, xsize, x, y, c, hankaku + *s * 16);\r
256                         x += 8;\r
257                 }\r
258         }\r
259 \r
260         return;\r
261 }\r
262 \r
263 void putblock_i(void *vrami, int vxsize, int pxsize, int pysize, int px0, int py0, void *buf, int bxsize)\r
264 {\r
265         if(system.data.info.vesa.BitsPerPixel == 8){\r
266                 putblock8_8(vrami, vxsize, pxsize, pysize, px0, py0, buf, bxsize);\r
267         } else if(system.data.info.vesa.BitsPerPixel == 16){\r
268                 putblock16_16(vrami, vxsize, pxsize, pysize, px0, py0, buf, bxsize);\r
269         } else if(system.data.info.vesa.BitsPerPixel == 32){\r
270                 putblock32_32(vrami, vxsize, pxsize, pysize, px0, py0, buf, bxsize);\r
271         }\r
272 \r
273         return;\r
274 }\r
275 \r
276 void putblock_i_convert(void *to, int xsize, int px0, int py0, int px1, int py1, void *from, int tobpp, int frombpp)\r
277 {\r
278         int x, y;\r
279 \r
280         if(tobpp == 32){\r
281                 if(frombpp == 8){\r
282                         for(y = py0; y < py1; y++){\r
283                                 for(x = px0; x < px1; x++){\r
284                                         ((uint *)to)[(xsize * y) + x] = rgb_int2char_list[((uchar *)from)[(xsize * y) + x]];\r
285                                 }\r
286                         }\r
287                 }\r
288         }\r
289 \r
290         return;\r
291 }\r
292 \r
293 void line_i(void *vrami, int xsize, int x0, int y0, int x1, int y1, uint c)\r
294 {\r
295         int i, x, y, len, dx, dy;\r
296 \r
297         dx = x1 - x0;\r
298         dy = y1 - y0;\r
299         x = x0 << 10;\r
300         y = y0 << 10;\r
301         if(dx < 0) dx = -dx;\r
302         if(dy < 0) dy = -dy;\r
303         if(dx >= dy){\r
304                 len = dx + 1;\r
305                 if(x0 > x1) dx = -1024;\r
306                 else dx = 1024;\r
307                 if(y0 <= y1) dy = ((y1 - y0 + 1) << 10) / len;\r
308                 else dy = ((y1 - y0 - 1) << 10) / len;\r
309         } else{\r
310                 len = dy + 1;\r
311                 if(y0 > y1) dy = -1024;\r
312                 else dy = 1024;\r
313                 if(x0 <= x1) dx = ((x1 - x0 + 1) << 10) / len;\r
314                 else dx = ((x1 - x0 - 1) << 10) / len;\r
315         }\r
316         for(i = 0; i < len; i++){\r
317                 point_i(vrami, x >> 10, y >> 10, c, xsize);\r
318                 x += dx;\r
319                 y += dy;\r
320         }\r
321 \r
322         return;\r
323 }\r
324 \r
325 void line_bpp(void *vrami, int xsize, int x0, int y0, int x1, int y1, uint c, uint bpp)\r
326 {\r
327         int i, x, y, len, dx, dy;\r
328 \r
329         dx = x1 - x0;\r
330         dy = y1 - y0;\r
331         x = x0 << 10;\r
332         y = y0 << 10;\r
333         if(dx < 0) dx = -dx;\r
334         if(dy < 0) dy = -dy;\r
335         if(dx >= dy){\r
336                 len = dx + 1;\r
337                 if(x0 > x1) dx = -1024;\r
338                 else dx = 1024;\r
339                 if(y0 <= y1) dy = ((y1 - y0 + 1) << 10) / len;\r
340                 else dy = ((y1 - y0 - 1) << 10) / len;\r
341         } else{\r
342                 len = dy + 1;\r
343                 if(y0 > y1) dy = -1024;\r
344                 else dy = 1024;\r
345                 if(x0 <= x1) dx = ((x1 - x0 + 1) << 10) / len;\r
346                 else dx = ((x1 - x0 - 1) << 10) / len;\r
347         }\r
348         for(i = 0; i < len; i++){\r
349                 point_bpp(vrami, x >> 10, y >> 10, c, xsize, bpp);\r
350                 x += dx;\r
351                 y += dy;\r
352         }\r
353 \r
354         return;\r
355 }\r
356 \r
357 void draw_hexagon_i(void *vrami, int xsize, int a, int x, int y, uint c)\r
358 {\r
359         int n, m;\r
360 \r
361         if(a < 0) a = -a;\r
362         m = a >> 1;\r
363         n = (1773 * m) >> 10;\r
364 \r
365 \r
366         line_i(vrami, xsize, x    , y - a, x + n, y - m, c);\r
367         line_i(vrami, xsize, x + n, y - m, x + n, y + m, c);\r
368         line_i(vrami, xsize, x + n, y + m, x    , y + a, c);\r
369         line_i(vrami, xsize, x    , y + a, x - n, y + m, c);\r
370         line_i(vrami, xsize, x - n, y + m, x - n, y - m, c);\r
371         line_i(vrami, xsize, x - n, y - m, x    , y - a, c);\r
372 \r
373         return;\r
374 }\r
375 \r
376 void draw_chnos_logo(void *vrami, int xsize, int a, int x, int y)\r
377 {\r
378         int n, m, oldx, oldy;\r
379         uint c;\r
380 \r
381         oldx = x;\r
382         oldy = y;\r
383 \r
384         if(a < 0) a = -a;\r
385         m = a >> 1;\r
386         n = (1773 * m) >> 10;\r
387         c = 0x00FFFF;\r
388 \r
389         x = x - n;\r
390         x = x - n;\r
391         x = x - n;\r
392         y = y - (3 * m);\r
393 \r
394         line_i(vrami, xsize, x    , y - a, x + n, y - m, c);\r
395         line_i(vrami, xsize, x + n, y + m, x    , y + a, c);\r
396         line_i(vrami, xsize, x - n, y - m, x    , y - a, c);\r
397 \r
398         x = x + n;\r
399         x = x + n;\r
400 \r
401         line_i(vrami, xsize, x    , y - a, x + n, y - m, c);\r
402         line_i(vrami, xsize, x + n, y - m, x    , y    , c);\r
403         line_i(vrami, xsize, x + n, y - m, x + n, y + m, c);\r
404         line_i(vrami, xsize, x + n, y + m, x    , y + a, c);\r
405         line_i(vrami, xsize, x    , y + a, x    , y    , c);\r
406         line_i(vrami, xsize, x    , y + a, x - n, y + m, c);\r
407         line_i(vrami, xsize, x - n, y + m, x - n, y - m, c);\r
408         line_i(vrami, xsize, x - n, y - m, x    , y    , c);\r
409         line_i(vrami, xsize, x - n, y - m, x    , y - a, c);\r
410 \r
411         x = x + n;\r
412         x = x + n;\r
413 \r
414         line_i(vrami, xsize, x    , y - a, x + n, y - m, c);\r
415         line_i(vrami, xsize, x + n, y - m, x    , y    , c);\r
416         line_i(vrami, xsize, x + n, y - m, x + n, y + m, c);\r
417         line_i(vrami, xsize, x + n, y + m, x    , y + a, c);\r
418         line_i(vrami, xsize, x    , y + a, x    , y    , c);\r
419         line_i(vrami, xsize, x    , y + a, x - n, y + m, c);\r
420         line_i(vrami, xsize, x - n, y + m, x - n, y - m, c);\r
421         line_i(vrami, xsize, x - n, y - m, x    , y    , c);\r
422         line_i(vrami, xsize, x - n, y - m, x    , y - a, c);\r
423 \r
424         x = x + n;\r
425         x = x + n;\r
426 \r
427         line_i(vrami, xsize, x    , y - a, x + n, y - m, c);\r
428         line_i(vrami, xsize, x    , y + a, x - n, y + m, c);\r
429         line_i(vrami, xsize, x - n, y - m, x    , y - a, c);\r
430 \r
431         x = x - n;\r
432         x = x - n;\r
433 \r
434         x = x - n;\r
435         x = x - n;\r
436 \r
437         x = x + n;\r
438         y = y + (3 * m);\r
439 \r
440         line_i(vrami, xsize, x    , y - a, x + n, y - m, c);\r
441         line_i(vrami, xsize, x + n, y - m, x    , y    , c);\r
442         line_i(vrami, xsize, x + n, y - m, x + n, y + m, c);\r
443         line_i(vrami, xsize, x + n, y + m, x    , y + a, c);\r
444         line_i(vrami, xsize, x    , y + a, x    , y    , c);\r
445         line_i(vrami, xsize, x    , y + a, x - n, y + m, c);\r
446         line_i(vrami, xsize, x - n, y + m, x - n, y - m, c);\r
447         line_i(vrami, xsize, x - n, y - m, x    , y    , c);\r
448         line_i(vrami, xsize, x - n, y - m, x    , y - a, c);\r
449 \r
450         x = x + n;\r
451         y = y + (3 * m);\r
452 \r
453         line_i(vrami, xsize, x    , y - a, x + n, y - m, c);\r
454 \r
455         x = x + n;\r
456         x = x + n;\r
457 \r
458         line_i(vrami, xsize, x    , y - a, x + n, y - m, c);\r
459         line_i(vrami, xsize, x + n, y - m, x    , y    , c);\r
460         line_i(vrami, xsize, x + n, y - m, x + n, y + m, c);\r
461         line_i(vrami, xsize, x + n, y + m, x    , y + a, c);\r
462         line_i(vrami, xsize, x    , y + a, x    , y    , c);\r
463         line_i(vrami, xsize, x    , y + a, x - n, y + m, c);\r
464         line_i(vrami, xsize, x - n, y + m, x - n, y - m, c);\r
465         line_i(vrami, xsize, x - n, y - m, x    , y    , c);\r
466         line_i(vrami, xsize, x - n, y - m, x    , y - a, c);\r
467 \r
468         x = x - n;\r
469         x = x - n;\r
470 \r
471         x = x - n;\r
472         y = y - (3 * m);\r
473 \r
474         x = x - n;\r
475         y = y + (3 * m);\r
476 \r
477         line_i(vrami, xsize, x - n, y - m, x    , y - a, c);\r
478 \r
479         x = x - n;\r
480         x = x - n;\r
481 \r
482         line_i(vrami, xsize, x    , y - a, x + n, y - m, c);\r
483         line_i(vrami, xsize, x + n, y - m, x    , y    , c);\r
484         line_i(vrami, xsize, x + n, y - m, x + n, y + m, c);\r
485         line_i(vrami, xsize, x + n, y + m, x    , y + a, c);\r
486         line_i(vrami, xsize, x    , y + a, x    , y    , c);\r
487         line_i(vrami, xsize, x    , y + a, x - n, y + m, c);\r
488         line_i(vrami, xsize, x - n, y + m, x - n, y - m, c);\r
489         line_i(vrami, xsize, x - n, y - m, x    , y    , c);\r
490         line_i(vrami, xsize, x - n, y - m, x    , y - a, c);\r
491 \r
492         x = x + n;\r
493         x = x + n;\r
494 \r
495         line_i(vrami, xsize, x + n, y - m, x + n, y + m, c);\r
496 \r
497         x = x + n;\r
498         y = y + (3 * m);\r
499 \r
500         line_i(vrami, xsize, x    , y - a, x + n, y - m, c);\r
501         line_i(vrami, xsize, x + n, y - m, x    , y    , c);\r
502         line_i(vrami, xsize, x + n, y - m, x + n, y + m, c);\r
503         line_i(vrami, xsize, x + n, y + m, x    , y + a, c);\r
504         line_i(vrami, xsize, x    , y + a, x    , y    , c);\r
505         line_i(vrami, xsize, x    , y + a, x - n, y + m, c);\r
506         line_i(vrami, xsize, x - n, y + m, x - n, y - m, c);\r
507         line_i(vrami, xsize, x - n, y - m, x    , y    , c);\r
508         line_i(vrami, xsize, x - n, y - m, x    , y - a, c);\r
509 \r
510         putfonts_asc_i(vrami, xsize, oldx + n + 8, oldy, 0x00FF00, "CHNOSProject");\r
511 \r
512         return;\r
513 }\r
514 \r
515 uchar rgb_int2char (uint c32)\r
516 {\r
517         uchar i ;\r
518         for(i = 0;i < 15; i++) {\r
519                 if(rgb_int2char_list[i] == c32) {\r
520                         return i;\r
521                 }\r
522         }\r
523         return 8;\r
524 }\r
525 \r
526 ushort rgb_int2short (uint c32)\r
527 {\r
528         ushort c16;\r
529         uchar c[4];\r
530 \r
531         c[3] = (c32 << 24) >> 24;\r
532         c[2] = (c32 << 16) >> 24;\r
533         c[1] = (c32 <<  8) >> 24;\r
534         c[0] = (c32 >> 24);\r
535 \r
536         c16 = ((c[1] >> 3) << 11 | (c[2] >> 2) << 5 | (c[3] >> 3));\r
537         \r
538         return c16;\r
539 }\r
540 \r
541 void col_pat(void *vrami, int xsize, int ysize)\r
542 {\r
543         int x,y;\r
544 \r
545         x=0;\r
546         y=0;\r
547         boxfill_i(vrami,xsize,0x000000,x,y,x+20,y+40);\r
548         boxfill_i(vrami,xsize,mix_color(0x000000,0x7fff0000),x+20,y,x+40,y+40);\r
549         x+=40;\r
550         boxfill_i(vrami,xsize,0xFF0000,x,y,x+20,y+40);\r
551         boxfill_i(vrami,xsize,mix_color(0x7fff0000,0x7f00ff00),x+20,y,x+40,y+40);\r
552         x+=40;\r
553         boxfill_i(vrami,xsize,0x00FF00,x,y,x+20,y+40);\r
554         boxfill_i(vrami,xsize,mix_color(0x7f00ff00,0x7fffff00),x+20,y,x+40,y+40);\r
555         x+=40;\r
556         boxfill_i(vrami,xsize,0xFFFF00,x,y,x+20,y+40);\r
557         boxfill_i(vrami,xsize,mix_color(0x7fffff00,0x7f0000ff),x+20,y,x+40,y+40);\r
558 \r
559         y+=40;\r
560         x=0;\r
561         boxfill_i(vrami,xsize,0x0000FF,x,y,x+40,y+40);\r
562         boxfill_i(vrami,xsize,mix_color(0x7f0000ff,0x7fff00ff),x+20,y,x+40,y+40);\r
563         x+=40;\r
564         boxfill_i(vrami,xsize,0xFF00FF,x,y,x+40,y+40);\r
565         boxfill_i(vrami,xsize,mix_color(0x7fff00ff,0x7f00ffff),x+20,y,x+40,y+40);\r
566         x+=40;\r
567         boxfill_i(vrami,xsize,0x00FFFF,x,y,x+40,y+40);\r
568         boxfill_i(vrami,xsize,mix_color(0x7f00ffff,0x7fffffff),x+20,y,x+40,y+40);\r
569         x+=40;\r
570         boxfill_i(vrami,xsize,0xFFFFFF,x,y,x+40,y+40);\r
571         boxfill_i(vrami,xsize,mix_color(0x7fffffff,0x7fc6c6c6),x+20,y,x+40,y+40);\r
572 \r
573         y+=40;\r
574         x=0;\r
575         boxfill_i(vrami,xsize,0xC6C6C6,x,y,x+40,y+40);\r
576         boxfill_i(vrami,xsize,mix_color(0x7fc6c6c6,0x7fff0000),x+20,y,x+40,y+40);\r
577         x+=40;\r
578         boxfill_i(vrami,xsize,0x840000,x,y,x+40,y+40);\r
579         boxfill_i(vrami,xsize,mix_color(0x7fff0000,0x7f008400),x+20,y,x+40,y+40);\r
580         x+=40;\r
581         boxfill_i(vrami,xsize,0x008400,x,y,x+40,y+40);\r
582         boxfill_i(vrami,xsize,mix_color(0x7f008400,0x7f848400),x+20,y,x+40,y+40);\r
583         x+=40;\r
584         boxfill_i(vrami,xsize,0x848400,x,y,x+40,y+40);\r
585         boxfill_i(vrami,xsize,mix_color(0x7f848400,0x7f000084),x+20,y,x+40,y+40);\r
586 \r
587         y+=40;\r
588         x=0;\r
589         boxfill_i(vrami,xsize,0x000084,x,y,x+40,y+40);\r
590         boxfill_i(vrami,xsize,mix_color(0x000000,0x7fff0000),x+20,y,x+40,y+40);\r
591         x+=40;\r
592         boxfill_i(vrami,xsize,0x840084,x,y,x+40,y+40);\r
593         boxfill_i(vrami,xsize,mix_color(0x7fff0000,0x7f840084),x+20,y,x+40,y+40);\r
594         x+=40;\r
595         boxfill_i(vrami,xsize,0x008484,x,y,x+40,y+40);\r
596         boxfill_i(vrami,xsize,mix_color(0x7f840084,0x7f008484),x+20,y,x+40,y+40);\r
597         x+=40;\r
598         boxfill_i(vrami,xsize,0x848484,x,y,x+40,y+40);\r
599         boxfill_i(vrami,xsize,mix_color(0x07f008484,0x7f848484),x+20,y,x+40,y+40);\r
600 \r
601         return;\r
602 }\r
603 \r