--- /dev/null
+\r
+#include "core.h"\r
+\r
+void Draw_Put_Font_08(void *vram, uint xsize, uint x, uint y, uint c, const uchar *font)\r
+{\r
+ int i;\r
+ uchar d;\r
+ uchar *p;\r
+ for (i = 0; i < 16; i++) {\r
+ p = (uchar *)(vram + (y + i) * xsize + x);\r
+ d = font[i];\r
+ if ((d & 0x80) != 0) { p[0] = (uchar)c; }\r
+ if ((d & 0x40) != 0) { p[1] = (uchar)c; }\r
+ if ((d & 0x20) != 0) { p[2] = (uchar)c; }\r
+ if ((d & 0x10) != 0) { p[3] = (uchar)c; }\r
+ if ((d & 0x08) != 0) { p[4] = (uchar)c; }\r
+ if ((d & 0x04) != 0) { p[5] = (uchar)c; }\r
+ if ((d & 0x02) != 0) { p[6] = (uchar)c; }\r
+ if ((d & 0x01) != 0) { p[7] = (uchar)c; }\r
+ }\r
+ return;\r
+}\r
+\r
+void Draw_Put_String_08(void *vram, uint xsize, uint x, uint y, uint c, const uchar *s)\r
+{\r
+ c = RGB_32_To_08(c);\r
+ for(; *s != 0x00; s++){\r
+ if(x > xsize - 8){\r
+ break;\r
+ }\r
+ Draw_Put_Font_08(vram, xsize, x, y, c, hankaku + *s * 16);\r
+ x += 8;\r
+ }\r
+ return;\r
+}\r
+\r
+void Draw_Fill_Rectangle_08(void *vram, uint xsize, uint c, uint x0, uint y0, uint x1, uint y1)\r
+{\r
+ uint x, y;\r
+ c = RGB_32_To_08(c);\r
+ for(y = y0; y <= y1; y++){\r
+ for(x = x0; x <= x1; x++){\r
+ ((uchar *)vram)[y * xsize + x] = (uchar)c;\r
+ }\r
+ }\r
+ return;\r
+}\r
+\r
+void Draw_Slide_Line_08(void *vram, uint xsize, uint ysize, uint vxsize, uint px, uint py)\r
+{\r
+ uint x, y;\r
+\r
+ for(y = py; y < ysize + py - 16; y++){\r
+ for(x = px; x < xsize + px; x++){\r
+ ((uchar *)vram)[y * vxsize + x] = ((uchar *)vram)[(y + 16) * vxsize + x];\r
+ }\r
+ }\r
+ return;\r
+}\r
+\r
+void Draw_Initialise_Palette(void)\r
+{\r
+ static uchar table_rgb[16 * 3] = {\r
+ 0x00, 0x00, 0x00,\r
+ 0xff, 0x00, 0x00,\r
+ 0x00, 0xff, 0x00,\r
+ 0xff, 0xff, 0x00,\r
+ 0x00, 0x00, 0xff,\r
+ 0xff, 0x00, 0xff,\r
+ 0x00, 0xff, 0xff,\r
+ 0xff, 0xff, 0xff,\r
+ 0xc6, 0xc6, 0xc6,\r
+ 0x84, 0x00, 0x00,\r
+ 0x00, 0x84, 0x00,\r
+ 0x84, 0x84, 0x00,\r
+ 0x00, 0x00, 0x84,\r
+ 0x84, 0x00, 0x84,\r
+ 0x00, 0x84, 0x84,\r
+ 0x84, 0x84, 0x84\r
+ };\r
+ uchar table2[216 * 3];\r
+ int r, g, b;\r
+\r
+ Draw_Set_Palette(0, 15, table_rgb);\r
+ for (b = 0; b < 6; b++) {\r
+ for (g = 0; g < 6; g++) {\r
+ for (r = 0; r < 6; r++) {\r
+ table2[(r + g * 6 + b * 36) * 3 + 0] = r * 51;\r
+ table2[(r + g * 6 + b * 36) * 3 + 1] = g * 51;\r
+ table2[(r + g * 6 + b * 36) * 3 + 2] = b * 51;\r
+ }\r
+ }\r
+ }\r
+ Draw_Set_Palette(16, 231, table2);\r
+\r
+ return;\r
+}\r
+\r
+void Draw_Set_Palette(int start, int end, uchar *rgb)\r
+{\r
+ int i, eflags;\r
+\r
+ eflags = IO_Load_EFlags();\r
+ IO_CLI(); \r
+ IO_Out8(0x03c8, start);\r
+ for (i = start; i <= end; i++) {\r
+ IO_Out8(0x03c9, rgb[0] >> 2);\r
+ IO_Out8(0x03c9, rgb[1] >> 2);\r
+ IO_Out8(0x03c9, rgb[2] >> 2);\r
+ rgb += 3;\r
+ }\r
+ IO_Store_EFlags(eflags);\r
+ return;\r
+}\r