--- /dev/null
+\r
+#include "core.h"\r
+\r
+/*ColorTable*/\r
+uint rgb_int2char_list [16] = {\r
+ 0x000000,\r
+ 0xff0000,\r
+ 0x00ff00,\r
+ 0xffff00,\r
+ 0x0000ff,\r
+ 0xff00ff,\r
+ 0x00ffff,\r
+ 0xffffff,\r
+ 0xc6c6c6,\r
+ 0x840000,\r
+ 0x008400,\r
+ 0x848400,\r
+ 0x000084,\r
+ 0x840084,\r
+ 0x008484,\r
+ 0x848484\r
+};\r
+char cursor[24][24] = {\r
+ "***.....................",\r
+ "*O**....................",\r
+ "*OO**...................",\r
+ "*OOO**..................",\r
+ "*OOOO**.................",\r
+ "*OOOOO**................",\r
+ "*OOOOOO**...............",\r
+ "*OOOOOOO**..............",\r
+ "*OOOOOOOO**.............",\r
+ "*OOOOOOOOO**............",\r
+ "*OOOOOOOOOO**...........",\r
+ "*OOOOOOOOOOO**..........",\r
+ "*OOOOOOOOOOOO**.........",\r
+ "*OOOOOOOOOOOOO**........",\r
+ "*OOOOOOOOOOOOOO**.......",\r
+ "*OOOOOOOOOOOOOOO**......",\r
+ "*OOOOOOOOOOOOOOOO**.....",\r
+ "*OOOOOO*************....",\r
+ "*OOOOO**................",\r
+ "*OOOO**.................",\r
+ "*OOO**..................",\r
+ "*OO**...................",\r
+ "*O**....................",\r
+ "***.....................",\r
+};\r
+\r
+void putfonts_asc_sht_i(UI_Sheet *sht, int x, int y, uint c, uint bc, const uchar *s)\r
+{\r
+ int l;\r
+ l = strlen(s);\r
+ boxfill_i(sht->buf, sht->bxsize, bc, x, y, x + l * 8, y + 16);\r
+ putfonts_asc_i(sht->buf, sht->bxsize, x, y, c, s);\r
+ sheet_refresh(sht, x, y, x + l * 8, y + 16);\r
+ return;\r
+}\r
+\r
+void putfonts_asc_sht_i_no_bc(UI_Sheet *sht, int x, int y, uint c, const uchar *s)\r
+{\r
+ int l;\r
+ l = strlen(s);\r
+ putfonts_asc_i(sht->buf, sht->bxsize, x, y, c, s);\r
+ sheet_refresh(sht, x, y, x + l * 8, y + 16);\r
+ return;\r
+}\r
+\r
+void init_screen_i(void *desktop, void *taskbar, void *mousecursor)\r
+{\r
+ uchar bpp;\r
+\r
+ bpp = system.data.info.vesa.BitsPerPixel;\r
+\r
+ if(bpp == 8){\r
+ init_palette();\r
+ }\r
+ init_desktop_i(desktop);\r
+ init_taskbar_i(taskbar);\r
+ init_mousecursor_i(mousecursor);\r
+\r
+ return;\r
+}\r
+\r
+void init_desktop_i(void *vrami)\r
+{\r
+ uchar bpp;\r
+ uint xsize, ysize;\r
+\r
+ bpp = system.data.info.vesa.BitsPerPixel;\r
+ xsize = system.data.info.boot.scrnx;\r
+ ysize = system.data.info.boot.scrny;\r
+\r
+ if(bpp == 8){\r
+ init_desktop8(vrami, xsize, ysize);\r
+ } else if(bpp == 16){\r
+ init_desktop16(vrami, xsize, ysize);\r
+ } else if(bpp == 32){\r
+ init_desktop32(vrami, xsize, ysize);\r
+ }\r
+ return; \r
+}\r
+\r
+void init_taskbar_i(void *vrami)\r
+{\r
+ uchar bpp;\r
+ uint xsize;\r
+\r
+ bpp = system.data.info.vesa.BitsPerPixel;\r
+ xsize = system.data.info.boot.scrnx;\r
+\r
+ if(bpp == 8){\r
+ init_taskbar8(vrami, xsize);\r
+ } else if(bpp == 16){\r
+ init_taskbar16(vrami, xsize);\r
+ } else if(bpp == 32){\r
+ init_taskbar32(vrami, xsize);\r
+ }\r
+ return; \r
+}\r
+\r
+void init_mousecursor_i(void *vrami)\r
+{\r
+ uchar bpp;\r
+\r
+ bpp = system.data.info.vesa.BitsPerPixel;\r
+\r
+ if(bpp == 8){\r
+ init_mouse_cursor8(vrami);\r
+ } else if(bpp == 16){\r
+ init_mouse_cursor16(vrami);\r
+ } else if(bpp == 32){\r
+ init_mouse_cursor32(vrami);\r
+ }\r
+ return; \r
+}\r
+\r
+uint mix_color(uint c0, uint c1)\r
+{\r
+ float r0,g0,b0,r1,g1,b1,alpha;\r
+ uint cc;\r
+\r
+ cc = c0 << 24;\r
+ b0 = (float)(cc >> 24);\r
+ cc = c0 << 16;\r
+ g0 = (float)(cc >> 24);\r
+ cc = c0 << 8;\r
+ r0 = (float)(cc >> 24);\r
+\r
+ cc = c1 << 24;\r
+ b1 = (float)(cc >> 24);\r
+ cc = c1 << 16;\r
+ g1 = (float)(c1 >> 24);\r
+ cc = c1 << 8;\r
+ r1 = (float)(c1 >> 24);\r
+\r
+ alpha = (float)(c1 >> 24);\r
+\r
+ r1 = r1 * (alpha / 255) + r0 * (1 - (alpha / 255));\r
+ g1 = g1 * (alpha / 255) + g0 * (1 - (alpha / 255));\r
+ b1 = b1 * (alpha / 255) + b0 * (1 - (alpha / 255));\r
+\r
+ c1 = (uint) alpha;\r
+ c1 = c1 << 8;\r
+ c1 += (uint) r1;\r
+ c1 = c1 << 8;\r
+ c1 += (uint) g1;\r
+ c1 = c1 << 8;\r
+ c1 += (uint) b1;\r
+\r
+ return c1;\r
+}\r
+\r
+void point_i(void *vrami, int x, int y, uint c, int xsize)\r
+{\r
+ uint cc = 0x00000000;\r
+\r
+ if(system.data.info.vesa.BitsPerPixel == 8){\r
+ cc = rgb_int2char(c);\r
+ } else if(system.data.info.vesa.BitsPerPixel == 16){\r
+ cc = rgb_int2short(c);\r
+ } else if(system.data.info.vesa.BitsPerPixel == 32){\r
+ cc = c;\r
+ }\r
+ point_bpp(vrami, x, y, cc, xsize, system.data.info.vesa.BitsPerPixel);\r
+ return;\r
+}\r
+\r
+void point_bpp(void *vrami, int x, int y, uint c, int xsize, uint bpp)\r
+{\r
+ uchar *buf8;\r
+ ushort *buf16;\r
+ uint *buf32;\r
+\r
+ if(bpp == 8){\r
+ buf8 = vrami;\r
+ buf8[y * xsize + x] = (uchar)c;\r
+ } else if(bpp == 16){\r
+ buf16 = vrami;\r
+ buf16[y * xsize + x] = (ushort)c;\r
+ } else if(bpp == 32){\r
+ buf32 = vrami;\r
+ buf32[y * xsize + x] = (uint)c;\r
+ }\r
+\r
+ return;\r
+}\r
+\r
+void boxfill_i(void *vrami, int xsize, uint c, int x0, int y0, int x1, int y1)\r
+{\r
+ uint cc = 0x00000000;\r
+\r
+ if(system.data.info.vesa.BitsPerPixel == 8){\r
+ cc = rgb_int2char(c);\r
+ } else if(system.data.info.vesa.BitsPerPixel == 16){\r
+ cc = rgb_int2short(c);\r
+ } else if(system.data.info.vesa.BitsPerPixel == 32){\r
+ cc = c;\r
+ }\r
+ boxfill_bpp(vrami, xsize, cc, x0, y0, x1, y1, system.data.info.vesa.BitsPerPixel);\r
+ return;\r
+}\r
+\r
+void boxfill_bpp(void *vrami, int xsize, uint c, int x0, int y0, int x1, int y1, uint bpp)\r
+{\r
+ if(bpp == 8){\r
+ boxfill8(vrami, xsize, c, x0, y0, x1, y1); \r
+ } else if(bpp == 16){\r
+ boxfill16(vrami, xsize, c, x0, y0, x1, y1);\r
+ } else if(bpp == 32){\r
+ boxfill32(vrami, xsize, c, x0, y0, x1, y1);\r
+ }\r
+\r
+ return;\r
+}\r
+\r
+void putfonts_asc_i(void *vrami, int xsize, int x, int y, uint c, const uchar *s)\r
+{\r
+ if(system.data.info.vesa.BitsPerPixel == 8){\r
+ uchar c8 = rgb_int2char(c);\r
+ for (; *s != 0x00; s++) {\r
+ putfont8(vrami, xsize, x, y, c8, hankaku + *s * 16);\r
+ x += 8;\r
+ }\r
+ return;\r
+ } else if(system.data.info.vesa.BitsPerPixel == 16){\r
+ ushort c16 = rgb_int2short(c);\r
+ for (; *s != 0x00; s++) {\r
+ putfont16(vrami, xsize, x, y, c16, hankaku + *s * 16);\r
+ x += 8;\r
+ }\r
+ return;\r
+ } else if(system.data.info.vesa.BitsPerPixel == 32){\r
+ for (; *s != 0x00; s++) {\r
+ putfont32(vrami, xsize, x, y, c, hankaku + *s * 16);\r
+ x += 8;\r
+ }\r
+ }\r
+\r
+ return;\r
+}\r
+\r
+void putblock_i(void *vrami, int vxsize, int pxsize, int pysize, int px0, int py0, void *buf, int bxsize)\r
+{\r
+ if(system.data.info.vesa.BitsPerPixel == 8){\r
+ putblock8_8(vrami, vxsize, pxsize, pysize, px0, py0, buf, bxsize);\r
+ } else if(system.data.info.vesa.BitsPerPixel == 16){\r
+ putblock16_16(vrami, vxsize, pxsize, pysize, px0, py0, buf, bxsize);\r
+ } else if(system.data.info.vesa.BitsPerPixel == 32){\r
+ putblock32_32(vrami, vxsize, pxsize, pysize, px0, py0, buf, bxsize);\r
+ }\r
+\r
+ return;\r
+}\r
+\r
+void putblock_i_convert(void *to, int xsize, int px0, int py0, int px1, int py1, void *from, int tobpp, int frombpp)\r
+{\r
+ int x, y;\r
+\r
+ if(tobpp == 32){\r
+ if(frombpp == 8){\r
+ for(y = py0; y < py1; y++){\r
+ for(x = px0; x < px1; x++){\r
+ ((uint *)to)[(xsize * y) + x] = rgb_int2char_list[((uchar *)from)[(xsize * y) + x]];\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ return;\r
+}\r
+\r
+void line_i(void *vrami, int xsize, int x0, int y0, int x1, int y1, uint c)\r
+{\r
+ int i, x, y, len, dx, dy;\r
+\r
+ dx = x1 - x0;\r
+ dy = y1 - y0;\r
+ x = x0 << 10;\r
+ y = y0 << 10;\r
+ if(dx < 0) dx = -dx;\r
+ if(dy < 0) dy = -dy;\r
+ if(dx >= dy){\r
+ len = dx + 1;\r
+ if(x0 > x1) dx = -1024;\r
+ else dx = 1024;\r
+ if(y0 <= y1) dy = ((y1 - y0 + 1) << 10) / len;\r
+ else dy = ((y1 - y0 - 1) << 10) / len;\r
+ } else{\r
+ len = dy + 1;\r
+ if(y0 > y1) dy = -1024;\r
+ else dy = 1024;\r
+ if(x0 <= x1) dx = ((x1 - x0 + 1) << 10) / len;\r
+ else dx = ((x1 - x0 - 1) << 10) / len;\r
+ }\r
+ for(i = 0; i < len; i++){\r
+ point_i(vrami, x >> 10, y >> 10, c, xsize);\r
+ x += dx;\r
+ y += dy;\r
+ }\r
+\r
+ return;\r
+}\r
+\r
+void line_bpp(void *vrami, int xsize, int x0, int y0, int x1, int y1, uint c, uint bpp)\r
+{\r
+ int i, x, y, len, dx, dy;\r
+\r
+ dx = x1 - x0;\r
+ dy = y1 - y0;\r
+ x = x0 << 10;\r
+ y = y0 << 10;\r
+ if(dx < 0) dx = -dx;\r
+ if(dy < 0) dy = -dy;\r
+ if(dx >= dy){\r
+ len = dx + 1;\r
+ if(x0 > x1) dx = -1024;\r
+ else dx = 1024;\r
+ if(y0 <= y1) dy = ((y1 - y0 + 1) << 10) / len;\r
+ else dy = ((y1 - y0 - 1) << 10) / len;\r
+ } else{\r
+ len = dy + 1;\r
+ if(y0 > y1) dy = -1024;\r
+ else dy = 1024;\r
+ if(x0 <= x1) dx = ((x1 - x0 + 1) << 10) / len;\r
+ else dx = ((x1 - x0 - 1) << 10) / len;\r
+ }\r
+ for(i = 0; i < len; i++){\r
+ point_bpp(vrami, x >> 10, y >> 10, c, xsize, bpp);\r
+ x += dx;\r
+ y += dy;\r
+ }\r
+\r
+ return;\r
+}\r
+\r
+void draw_hexagon_i(void *vrami, int xsize, int a, int x, int y, uint c)\r
+{\r
+ int n, m;\r
+\r
+ if(a < 0) a = -a;\r
+ m = a >> 1;\r
+ n = (1773 * m) >> 10;\r
+\r
+\r
+ line_i(vrami, xsize, x , y - a, x + n, y - m, c);\r
+ line_i(vrami, xsize, x + n, y - m, x + n, y + m, c);\r
+ line_i(vrami, xsize, x + n, y + m, x , y + a, c);\r
+ line_i(vrami, xsize, x , y + a, x - n, y + m, c);\r
+ line_i(vrami, xsize, x - n, y + m, x - n, y - m, c);\r
+ line_i(vrami, xsize, x - n, y - m, x , y - a, c);\r
+\r
+ return;\r
+}\r
+\r
+void draw_chnos_logo(void *vrami, int xsize, int a, int x, int y)\r
+{\r
+ int n, m, oldx, oldy;\r
+ uint c;\r
+\r
+ oldx = x;\r
+ oldy = y;\r
+\r
+ if(a < 0) a = -a;\r
+ m = a >> 1;\r
+ n = (1773 * m) >> 10;\r
+ c = 0x00FFFF;\r
+\r
+ x = x - n;\r
+ x = x - n;\r
+ x = x - n;\r
+ y = y - (3 * m);\r
+\r
+ line_i(vrami, xsize, x , y - a, x + n, y - m, c);\r
+ line_i(vrami, xsize, x + n, y + m, x , y + a, c);\r
+ line_i(vrami, xsize, x - n, y - m, x , y - a, c);\r
+\r
+ x = x + n;\r
+ x = x + n;\r
+\r
+ line_i(vrami, xsize, x , y - a, x + n, y - m, c);\r
+ line_i(vrami, xsize, x + n, y - m, x , y , c);\r
+ line_i(vrami, xsize, x + n, y - m, x + n, y + m, c);\r
+ line_i(vrami, xsize, x + n, y + m, x , y + a, c);\r
+ line_i(vrami, xsize, x , y + a, x , y , c);\r
+ line_i(vrami, xsize, x , y + a, x - n, y + m, c);\r
+ line_i(vrami, xsize, x - n, y + m, x - n, y - m, c);\r
+ line_i(vrami, xsize, x - n, y - m, x , y , c);\r
+ line_i(vrami, xsize, x - n, y - m, x , y - a, c);\r
+\r
+ x = x + n;\r
+ x = x + n;\r
+\r
+ line_i(vrami, xsize, x , y - a, x + n, y - m, c);\r
+ line_i(vrami, xsize, x + n, y - m, x , y , c);\r
+ line_i(vrami, xsize, x + n, y - m, x + n, y + m, c);\r
+ line_i(vrami, xsize, x + n, y + m, x , y + a, c);\r
+ line_i(vrami, xsize, x , y + a, x , y , c);\r
+ line_i(vrami, xsize, x , y + a, x - n, y + m, c);\r
+ line_i(vrami, xsize, x - n, y + m, x - n, y - m, c);\r
+ line_i(vrami, xsize, x - n, y - m, x , y , c);\r
+ line_i(vrami, xsize, x - n, y - m, x , y - a, c);\r
+\r
+ x = x + n;\r
+ x = x + n;\r
+\r
+ line_i(vrami, xsize, x , y - a, x + n, y - m, c);\r
+ line_i(vrami, xsize, x , y + a, x - n, y + m, c);\r
+ line_i(vrami, xsize, x - n, y - m, x , y - a, c);\r
+\r
+ x = x - n;\r
+ x = x - n;\r
+\r
+ x = x - n;\r
+ x = x - n;\r
+\r
+ x = x + n;\r
+ y = y + (3 * m);\r
+\r
+ line_i(vrami, xsize, x , y - a, x + n, y - m, c);\r
+ line_i(vrami, xsize, x + n, y - m, x , y , c);\r
+ line_i(vrami, xsize, x + n, y - m, x + n, y + m, c);\r
+ line_i(vrami, xsize, x + n, y + m, x , y + a, c);\r
+ line_i(vrami, xsize, x , y + a, x , y , c);\r
+ line_i(vrami, xsize, x , y + a, x - n, y + m, c);\r
+ line_i(vrami, xsize, x - n, y + m, x - n, y - m, c);\r
+ line_i(vrami, xsize, x - n, y - m, x , y , c);\r
+ line_i(vrami, xsize, x - n, y - m, x , y - a, c);\r
+\r
+ x = x + n;\r
+ y = y + (3 * m);\r
+\r
+ line_i(vrami, xsize, x , y - a, x + n, y - m, c);\r
+\r
+ x = x + n;\r
+ x = x + n;\r
+\r
+ line_i(vrami, xsize, x , y - a, x + n, y - m, c);\r
+ line_i(vrami, xsize, x + n, y - m, x , y , c);\r
+ line_i(vrami, xsize, x + n, y - m, x + n, y + m, c);\r
+ line_i(vrami, xsize, x + n, y + m, x , y + a, c);\r
+ line_i(vrami, xsize, x , y + a, x , y , c);\r
+ line_i(vrami, xsize, x , y + a, x - n, y + m, c);\r
+ line_i(vrami, xsize, x - n, y + m, x - n, y - m, c);\r
+ line_i(vrami, xsize, x - n, y - m, x , y , c);\r
+ line_i(vrami, xsize, x - n, y - m, x , y - a, c);\r
+\r
+ x = x - n;\r
+ x = x - n;\r
+\r
+ x = x - n;\r
+ y = y - (3 * m);\r
+\r
+ x = x - n;\r
+ y = y + (3 * m);\r
+\r
+ line_i(vrami, xsize, x - n, y - m, x , y - a, c);\r
+\r
+ x = x - n;\r
+ x = x - n;\r
+\r
+ line_i(vrami, xsize, x , y - a, x + n, y - m, c);\r
+ line_i(vrami, xsize, x + n, y - m, x , y , c);\r
+ line_i(vrami, xsize, x + n, y - m, x + n, y + m, c);\r
+ line_i(vrami, xsize, x + n, y + m, x , y + a, c);\r
+ line_i(vrami, xsize, x , y + a, x , y , c);\r
+ line_i(vrami, xsize, x , y + a, x - n, y + m, c);\r
+ line_i(vrami, xsize, x - n, y + m, x - n, y - m, c);\r
+ line_i(vrami, xsize, x - n, y - m, x , y , c);\r
+ line_i(vrami, xsize, x - n, y - m, x , y - a, c);\r
+\r
+ x = x + n;\r
+ x = x + n;\r
+\r
+ line_i(vrami, xsize, x + n, y - m, x + n, y + m, c);\r
+\r
+ x = x + n;\r
+ y = y + (3 * m);\r
+\r
+ line_i(vrami, xsize, x , y - a, x + n, y - m, c);\r
+ line_i(vrami, xsize, x + n, y - m, x , y , c);\r
+ line_i(vrami, xsize, x + n, y - m, x + n, y + m, c);\r
+ line_i(vrami, xsize, x + n, y + m, x , y + a, c);\r
+ line_i(vrami, xsize, x , y + a, x , y , c);\r
+ line_i(vrami, xsize, x , y + a, x - n, y + m, c);\r
+ line_i(vrami, xsize, x - n, y + m, x - n, y - m, c);\r
+ line_i(vrami, xsize, x - n, y - m, x , y , c);\r
+ line_i(vrami, xsize, x - n, y - m, x , y - a, c);\r
+\r
+ putfonts_asc_i(vrami, xsize, oldx + n + 8, oldy, 0x00FF00, "CHNOSProject");\r
+\r
+ return;\r
+}\r
+\r
+uchar rgb_int2char (uint c32)\r
+{\r
+ uchar i ;\r
+ for(i = 0;i < 15; i++) {\r
+ if(rgb_int2char_list[i] == c32) {\r
+ return i;\r
+ }\r
+ }\r
+ return 8;\r
+}\r
+\r
+ushort rgb_int2short (uint c32)\r
+{\r
+ ushort c16;\r
+ uchar c[4];\r
+\r
+ c[3] = (c32 << 24) >> 24;\r
+ c[2] = (c32 << 16) >> 24;\r
+ c[1] = (c32 << 8) >> 24;\r
+ c[0] = (c32 >> 24);\r
+\r
+ c16 = ((c[1] >> 3) << 11 | (c[2] >> 2) << 5 | (c[3] >> 3));\r
+ \r
+ return c16;\r
+}\r
+\r
+void col_pat(void *vrami, int xsize, int ysize)\r
+{\r
+ int x,y;\r
+\r
+ x=0;\r
+ y=0;\r
+ boxfill_i(vrami,xsize,0x000000,x,y,x+20,y+40);\r
+ boxfill_i(vrami,xsize,mix_color(0x000000,0x7fff0000),x+20,y,x+40,y+40);\r
+ x+=40;\r
+ boxfill_i(vrami,xsize,0xFF0000,x,y,x+20,y+40);\r
+ boxfill_i(vrami,xsize,mix_color(0x7fff0000,0x7f00ff00),x+20,y,x+40,y+40);\r
+ x+=40;\r
+ boxfill_i(vrami,xsize,0x00FF00,x,y,x+20,y+40);\r
+ boxfill_i(vrami,xsize,mix_color(0x7f00ff00,0x7fffff00),x+20,y,x+40,y+40);\r
+ x+=40;\r
+ boxfill_i(vrami,xsize,0xFFFF00,x,y,x+20,y+40);\r
+ boxfill_i(vrami,xsize,mix_color(0x7fffff00,0x7f0000ff),x+20,y,x+40,y+40);\r
+\r
+ y+=40;\r
+ x=0;\r
+ boxfill_i(vrami,xsize,0x0000FF,x,y,x+40,y+40);\r
+ boxfill_i(vrami,xsize,mix_color(0x7f0000ff,0x7fff00ff),x+20,y,x+40,y+40);\r
+ x+=40;\r
+ boxfill_i(vrami,xsize,0xFF00FF,x,y,x+40,y+40);\r
+ boxfill_i(vrami,xsize,mix_color(0x7fff00ff,0x7f00ffff),x+20,y,x+40,y+40);\r
+ x+=40;\r
+ boxfill_i(vrami,xsize,0x00FFFF,x,y,x+40,y+40);\r
+ boxfill_i(vrami,xsize,mix_color(0x7f00ffff,0x7fffffff),x+20,y,x+40,y+40);\r
+ x+=40;\r
+ boxfill_i(vrami,xsize,0xFFFFFF,x,y,x+40,y+40);\r
+ boxfill_i(vrami,xsize,mix_color(0x7fffffff,0x7fc6c6c6),x+20,y,x+40,y+40);\r
+\r
+ y+=40;\r
+ x=0;\r
+ boxfill_i(vrami,xsize,0xC6C6C6,x,y,x+40,y+40);\r
+ boxfill_i(vrami,xsize,mix_color(0x7fc6c6c6,0x7fff0000),x+20,y,x+40,y+40);\r
+ x+=40;\r
+ boxfill_i(vrami,xsize,0x840000,x,y,x+40,y+40);\r
+ boxfill_i(vrami,xsize,mix_color(0x7fff0000,0x7f008400),x+20,y,x+40,y+40);\r
+ x+=40;\r
+ boxfill_i(vrami,xsize,0x008400,x,y,x+40,y+40);\r
+ boxfill_i(vrami,xsize,mix_color(0x7f008400,0x7f848400),x+20,y,x+40,y+40);\r
+ x+=40;\r
+ boxfill_i(vrami,xsize,0x848400,x,y,x+40,y+40);\r
+ boxfill_i(vrami,xsize,mix_color(0x7f848400,0x7f000084),x+20,y,x+40,y+40);\r
+\r
+ y+=40;\r
+ x=0;\r
+ boxfill_i(vrami,xsize,0x000084,x,y,x+40,y+40);\r
+ boxfill_i(vrami,xsize,mix_color(0x000000,0x7fff0000),x+20,y,x+40,y+40);\r
+ x+=40;\r
+ boxfill_i(vrami,xsize,0x840084,x,y,x+40,y+40);\r
+ boxfill_i(vrami,xsize,mix_color(0x7fff0000,0x7f840084),x+20,y,x+40,y+40);\r
+ x+=40;\r
+ boxfill_i(vrami,xsize,0x008484,x,y,x+40,y+40);\r
+ boxfill_i(vrami,xsize,mix_color(0x7f840084,0x7f008484),x+20,y,x+40,y+40);\r
+ x+=40;\r
+ boxfill_i(vrami,xsize,0x848484,x,y,x+40,y+40);\r
+ boxfill_i(vrami,xsize,mix_color(0x07f008484,0x7f848484),x+20,y,x+40,y+40);\r
+\r
+ return;\r
+}\r
+\r