emupal: add support for the IIBBGGRR format, only apply intensity bit if

there is a color defined
This commit is contained in:
Dirk Best 2015-08-12 12:12:05 +02:00
parent 0448566a4c
commit b25a7af59f
2 changed files with 15 additions and 5 deletions

View File

@ -966,14 +966,22 @@ void palette_device::palette_init_RRRRRGGGGGGBBBBB(palette_device &palette)
palette.set_pen_color(i, rgbexpand<5,6,5>(i, 11, 5, 0));
}
rgb_t raw_to_rgb_converter::BBGGRRII_decoder(UINT32 raw)
{
UINT8 i = raw & 3;
UINT8 r = pal4bit(((raw >> 0) & 0x0c) | i);
UINT8 g = pal4bit(((raw >> 2) & 0x0c) | i);
UINT8 b = pal4bit(((raw >> 4) & 0x0c) | i);
return rgb_t(r, g, b);
UINT8 r = (raw >> 0) & 0x0c;
UINT8 g = (raw >> 2) & 0x0c;
UINT8 b = (raw >> 4) & 0x0c;
return rgb_t(pal4bit(r ? (r | i) : 0), pal4bit(g ? (g | i) : 0), pal4bit(b ? (b | i) : 0));
}
rgb_t raw_to_rgb_converter::IIBBGGRR_decoder(UINT32 raw)
{
UINT8 i = (raw >> 6) & 3;
UINT8 r = (raw << 2) & 0x0c;
UINT8 g = (raw ) & 0x0c;
UINT8 b = (raw >> 2) & 0x0c;
return rgb_t(pal4bit(r ? (r | i) : 0), pal4bit(g ? (g | i) : 0), pal4bit(b ? (b | i) : 0));
}
rgb_t raw_to_rgb_converter::IRRRRRGGGGGBBBBB_decoder(UINT32 raw)

View File

@ -125,6 +125,7 @@
// standard 2-2-2-2 formats
#define PALETTE_FORMAT_BBGGRRII raw_to_rgb_converter(1, &raw_to_rgb_converter::BBGGRRII_decoder)
#define PALETTE_FORMAT_IIBBGGRR raw_to_rgb_converter(1, &raw_to_rgb_converter::IIBBGGRR_decoder)
// standard 3-3-3 formats
#define PALETTE_FORMAT_xxxxxxxBBBGGGRRR raw_to_rgb_converter(2, &raw_to_rgb_converter::standard_rgb_decoder<3,3,3, 0,3,6>)
@ -354,6 +355,7 @@ public:
// other standard decoders
static rgb_t BBGGRRII_decoder(UINT32 raw);
static rgb_t IIBBGGRR_decoder(UINT32 raw);
static rgb_t IRRRRRGGGGGBBBBB_decoder(UINT32 raw);
static rgb_t RRRRGGGGBBBBRGBx_decoder(UINT32 raw); // bits 3/2/1 are LSb
static rgb_t xRGBRRRRGGGGBBBB_bit0_decoder(UINT32 raw); // bits 14/13/12 are LSb