extend mmap wrapper functionality
[libpicofe.git] / linux / blit.c
1
2 // Convert 0000bbb0 ggg0rrr0 0000bbb0 ggg0rrr0
3 // to      00000000 rrr00000 ggg00000 bbb00000 ...
4 // TODO: rm when gp2x/emu.c is no longer used
5
6 void bgr444_to_rgb32(void *to, void *from)
7 {
8         unsigned short *ps = from;
9         unsigned int   *pd = to;
10         int pixels;
11
12         for (pixels = 0x40; pixels; pixels--, ps++, pd++)
13         {
14                 *pd = ((*ps<<20)&0xe00000) | ((*ps<<8)&0xe000) | ((*ps>>4)&0xe0);
15                 *pd |= *pd >> 3;
16         }
17 }
18
19 void bgr444_to_rgb32_sh(void *to, void *from)
20 {
21         unsigned short *ps = from;
22         unsigned int   *pd = to;
23         int pixels;
24
25         pd += 0x40;
26         for (pixels = 0x40; pixels; pixels--, ps++, pd++)
27         {
28                 *pd = ((*ps<<20)&0xe00000) | ((*ps<<8)&0xe000) | ((*ps>>4)&0xe0);
29                 *pd >>= 1;
30                 *pd |= *pd >> 3;
31                 pd[0x40*2] = *pd;
32         }
33
34         ps -= 0x40;
35         for (pixels = 0x40; pixels; pixels--, ps++, pd++)
36         {
37                 *pd = ((*ps<<20)&0xe00000) | ((*ps<<8)&0xe000) | ((*ps>>4)&0xe0);
38                 continue;
39                 *pd += 0x00404040;
40                 if (*pd & 0x01000000) *pd |= 0x00e00000;
41                 if (*pd & 0x00010000) *pd |= 0x0000e000;
42                 if (*pd & 0x00000100) *pd |= 0x000000e0;
43                 *pd &= 0x00e0e0e0;
44                 *pd |= *pd >> 3;
45         }
46 }
47
48 void vidcpy_m2(void *dest, void *src, int m32col, int with_32c_border)
49 {
50         unsigned char *pd = dest, *ps = src;
51         int i, u;
52
53         if (m32col) {
54                 for (i = 0; i < 224; i++)
55                 {
56                         ps += 8;
57                         pd += 32;
58                         for (u = 0; u < 256; u++)
59                                 *pd++ = *ps++;
60                         ps += 64;
61                         pd += 32;
62                 }
63         } else {
64                 for (i = 0; i < 224; i++)
65                 {
66                         ps += 8;
67                         for (u = 0; u < 320; u++)
68                                 *pd++ = *ps++;
69                 }
70         }
71 }
72
73 void vidcpy_m2_rot(void *dest, void *src, int m32col, int with_32c_border)
74 {
75 }
76
77 void rotated_blit8 (void *dst, void *linesx4, int y, int is_32col)
78 {
79 }
80
81 void rotated_blit16(void *dst, void *linesx4, int y, int is_32col)
82 {
83 }