--- /dev/null
+\r
+#include "core.h"\r
+\r
+void Drawing16_Fill_Rectangle(void *vram, uint xsize, uint c, uint x0, uint y0, uint x1, uint y1)\r
+{\r
+ uint x, y;\r
+\r
+//if negative location\r
+ if((x0 & 0x80000000) != 0 || (y0 & 0x80000000) != 0 || (x1 & 0x80000000) != 0 || (y1 & 0x80000000) != 0){\r
+ return;\r
+ }\r
+\r
+ c = RGB_32_To_16(c);\r
+ for(y = y0; y <= y1; y++){\r
+ for(x = x0; x <= x1; x++){\r
+ ((ushort *)vram)[y * xsize + x] = (ushort)c;\r
+ }\r
+ }\r
+ return;\r
+}\r
+\r
+void Drawing16_Put_Font(void *vram, uint xsize, uint x, uint y, uint c, const uchar *font)\r
+{\r
+ int i;\r
+ uchar d;\r
+ ushort *p;\r
+\r
+//if negative location\r
+ if((x & 0x80000000) != 0 || (y & 0x80000000) != 0){\r
+ return;\r
+ }\r
+\r
+ for (i = 0; i < 16; i++) {\r
+ p = (ushort *)vram + (y + i) * xsize + x;\r
+ d = font[i];\r
+ if ((d & 0x80) != 0) { p[0] = (ushort)c; }\r
+ if ((d & 0x40) != 0) { p[1] = (ushort)c; }\r
+ if ((d & 0x20) != 0) { p[2] = (ushort)c; }\r
+ if ((d & 0x10) != 0) { p[3] = (ushort)c; }\r
+ if ((d & 0x08) != 0) { p[4] = (ushort)c; }\r
+ if ((d & 0x04) != 0) { p[5] = (ushort)c; }\r
+ if ((d & 0x02) != 0) { p[6] = (ushort)c; }\r
+ if ((d & 0x01) != 0) { p[7] = (ushort)c; }\r
+ }\r
+ return;\r
+}\r
+\r
+void Drawing16_Put_String(void *vram, uint xsize, uint x, uint y, uint c, const uchar s[])\r
+{\r
+//if negative location\r
+ if((x & 0x80000000) != 0 || (y & 0x80000000) != 0){\r
+ return;\r
+ }\r
+\r
+ if(s == Null){\r
+ return;\r
+ }\r
+\r
+ c = RGB_32_To_16(c);\r
+ for(; *s != 0x00; s++){\r
+ if(x > xsize - 8){\r
+ break;\r
+ }\r
+ Drawing16_Put_Font(vram, xsize, x, y, c, hankaku + *s * 16);\r
+ x += 8;\r
+ }\r
+ return;\r
+}\r
+\r
+void Drawing16_Draw_Point(void *vram, uint xsize, uint x, uint y, uint c)\r
+{\r
+//if negative location\r
+ if((x & 0x80000000) != 0 || (y & 0x80000000) != 0){\r
+ return;\r
+ }\r
+\r
+ ((ushort *)vram)[y * xsize + x] = RGB_32_To_16(c);\r
+ return;\r
+}\r