initial import
[picodrive.git] / platform / linux / blit.c
1
2 // Convert 0000bbb0 ggg0rrr0 0000bbb0 ggg0rrr0
3 // to      00000000 rrr00000 ggg00000 bbb00000 ...
4
5 void vidConvCpyRGB32  (void *to, void *from, int pixels)
6 {
7         unsigned short *ps = from;
8         unsigned int   *pd = to;
9
10         for (; pixels; pixels--, ps++, pd++)
11         {
12                 *pd = ((*ps<<20)&0xe00000) | ((*ps<<8)&0xe000) | ((*ps>>4)&0xe0);
13                 *pd |= *pd >> 3;
14         }
15 }
16
17 void vidConvCpyRGB32sh(void *to, void *from, int pixels)
18 {
19         unsigned short *ps = from;
20         unsigned int   *pd = to;
21
22         for (; pixels; pixels--, ps++, pd++)
23         {
24                 *pd = ((*ps<<20)&0xe00000) | ((*ps<<8)&0xe000) | ((*ps>>4)&0xe0);
25                 *pd >>= 1;
26                 *pd |= *pd >> 3;
27         }
28 }
29
30 void vidConvCpyRGB32hi(void *to, void *from, int pixels)
31 {
32         unsigned short *ps = from;
33         unsigned int   *pd = to;
34
35         for (; 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 vidCpyM2_40col(void *dest, void *src)
49 {
50         unsigned char *pd = dest, *ps = src;
51         int i, u;
52
53         for (i = 0; i < 224; i++)
54         {
55                 ps += 8;
56                 for (u = 0; u < 320; u++)
57                         *pd++ = *ps++;
58         }
59 }
60
61 void vidCpyM2_32col(void *dest, void *src)
62 {
63         unsigned char *pd = dest, *ps = src;
64         int i, u;
65
66         for (i = 0; i < 224; i++)
67         {
68                 ps += 8;
69                 pd += 32;
70                 for (u = 0; u < 256; u++)
71                         *pd++ = *ps++;
72                 ps += 64;
73                 pd += 32;
74         }
75 }
76
77 void vidCpyM2_32col_nobord(void *dest, void *src)
78 {
79         vidCpyM2_32col(dest, src);
80 }
81