6 * This work is licensed under the terms of MAME license.
7 * See COPYING file in the top-level directory.
12 // Convert 0000bbb0 ggg0rrr0 0000bbb0 ggg0rrr0
13 // to 00000000 rrr00000 ggg00000 bbb00000 ...
14 // TODO: rm when gp2x/emu.c is no longer used
16 void bgr444_to_rgb32(void *to, void *from, unsigned entries)
18 unsigned short *ps = from;
19 unsigned int *pd = to;
22 for (pixels = entries; pixels; pixels--, ps++, pd++)
24 *pd = ((*ps<<20)&0xe00000) | ((*ps<<8)&0xe000) | ((*ps>>4)&0xe0);
29 void bgr444_to_rgb32_sh(void *to, void *from)
31 unsigned short *ps = from;
32 unsigned int *pd = to;
36 for (pixels = 0x40; pixels; pixels--, ps++, pd++)
38 *pd = ((*ps<<20)&0xe00000) | ((*ps<<8)&0xe000) | ((*ps>>4)&0xe0);
45 for (pixels = 0x40; pixels; pixels--, ps++, pd++)
47 *pd = ((*ps<<20)&0xe00000) | ((*ps<<8)&0xe000) | ((*ps>>4)&0xe0);
50 if (*pd & 0x01000000) *pd |= 0x00e00000;
51 if (*pd & 0x00010000) *pd |= 0x0000e000;
52 if (*pd & 0x00000100) *pd |= 0x000000e0;
59 #define Y (x_y & 0xffff)
61 #define H (w_h & 0xffff)
63 // gp2x: 0-> X wiz: Y <-0
69 void vidcpy_8bit(void *dest, void *src, int x_y, int w_h)
71 unsigned char *pd = dest, *ps = src;
76 for (i = 0; i < H; i++) {
82 void vidcpy_8bit_rot(void *dest, void *src, int x_y, int w_h)
84 unsigned char *pd = dest, *ps = src;
87 pd += Y + (319-X)*240;
89 for (i = 0; i < H; i += 4) {
90 unsigned char *p = (void *)ps;
91 unsigned int *q = (void *)pd;
92 for (u = 0; u < W; u++) {
93 *q = (p[3*328]<<24) + (p[2*328]<<16) + (p[1*328]<<8) + p[0*328];
101 void rotated_blit8 (void *dst, void *linesx4, int y, int is_32col)
103 unsigned char *pd = dst, *ps = linesx4;
106 x = (is_32col ? 32 : 0);
107 w = (is_32col ? 256 : 320);
110 pd += y + (319-x)*240;
113 unsigned char *p = (void *)ps;
114 unsigned int *q = (void *)pd;
115 for (u = 0; u < w; u++) {
116 *q = (p[3*328]<<24) + (p[2*328]<<16) + (p[1*328]<<8) + p[0*328];
122 void rotated_blit16(void *dst, void *linesx4, int y, int is_32col)
124 unsigned short *pd = dst, *ps = linesx4;
127 x = (is_32col ? 32 : 0);
128 w = (is_32col ? 256 : 320);
131 pd += y + (319-x)*240;
134 unsigned short *p = (void *)ps;
135 unsigned int *q = (void *)pd;
136 for (u = 0; u < w; u++) {
137 q[0] = (p[1*328]<<16) + p[0*328];
138 q[1] = (p[3*328]<<16) + p[2*328];