mirror of
https://github.com/FunKey-Project/picodrive-irixxxx.git
synced 2025-12-13 16:18:51 +01:00
core+gp2x+psp, fix handling mid-frame palette changes platform, fix vertical scaling, aspect ratio handling (gp2x, psp) libretro, various fixes (input handling, aspect ratio) platform, include current dir in bios search path
92 lines
1.8 KiB
C
92 lines
1.8 KiB
C
/*
|
|
* PicoDrive
|
|
* (C) notaz, 2006,2009
|
|
*
|
|
* This work is licensed under the terms of MAME license.
|
|
* See COPYING file in the top-level directory.
|
|
*/
|
|
|
|
// Convert 0000bbb0 ggg0rrr0 0000bbb0 ggg0rrr0
|
|
// to 00000000 rrr00000 ggg00000 bbb00000 ...
|
|
// TODO: rm when gp2x/emu.c is no longer used
|
|
|
|
void bgr444_to_rgb32(void *to, void *from, unsigned entries)
|
|
{
|
|
unsigned short *ps = from;
|
|
unsigned int *pd = to;
|
|
int pixels;
|
|
|
|
for (pixels = entries; pixels; pixels--, ps++, pd++)
|
|
{
|
|
*pd = ((*ps<<20)&0xe00000) | ((*ps<<8)&0xe000) | ((*ps>>4)&0xe0);
|
|
*pd |= *pd >> 3;
|
|
}
|
|
}
|
|
|
|
void bgr444_to_rgb32_sh(void *to, void *from)
|
|
{
|
|
unsigned short *ps = from;
|
|
unsigned int *pd = to;
|
|
int pixels;
|
|
|
|
pd += 0x40;
|
|
for (pixels = 0x40; pixels; pixels--, ps++, pd++)
|
|
{
|
|
*pd = ((*ps<<20)&0xe00000) | ((*ps<<8)&0xe000) | ((*ps>>4)&0xe0);
|
|
*pd >>= 1;
|
|
*pd |= *pd >> 3;
|
|
pd[0x40*2] = *pd;
|
|
}
|
|
|
|
ps -= 0x40;
|
|
for (pixels = 0x40; pixels; pixels--, ps++, pd++)
|
|
{
|
|
*pd = ((*ps<<20)&0xe00000) | ((*ps<<8)&0xe000) | ((*ps>>4)&0xe0);
|
|
continue;
|
|
*pd += 0x00404040;
|
|
if (*pd & 0x01000000) *pd |= 0x00e00000;
|
|
if (*pd & 0x00010000) *pd |= 0x0000e000;
|
|
if (*pd & 0x00000100) *pd |= 0x000000e0;
|
|
*pd &= 0x00e0e0e0;
|
|
*pd |= *pd >> 3;
|
|
}
|
|
}
|
|
|
|
void vidcpy_m2(void *dest, void *src, int m32col, int with_32c_border)
|
|
{
|
|
unsigned char *pd = dest, *ps = src;
|
|
int i, u;
|
|
|
|
if (m32col) {
|
|
for (i = 0; i < 224; i++)
|
|
{
|
|
ps += 8;
|
|
ps += 32;
|
|
pd += 32;
|
|
for (u = 0; u < 256; u++)
|
|
*pd++ = *ps++;
|
|
ps += 32;
|
|
pd += 32;
|
|
}
|
|
} else {
|
|
for (i = 0; i < 224; i++)
|
|
{
|
|
ps += 8;
|
|
for (u = 0; u < 320; u++)
|
|
*pd++ = *ps++;
|
|
}
|
|
}
|
|
}
|
|
|
|
void vidcpy_m2_rot(void *dest, void *src, int m32col, int with_32c_border)
|
|
{
|
|
}
|
|
|
|
void rotated_blit8 (void *dst, void *linesx4, int y, int is_32col)
|
|
{
|
|
}
|
|
|
|
void rotated_blit16(void *dst, void *linesx4, int y, int is_32col)
|
|
{
|
|
}
|