diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/emu/emupal.c | 18 | ||||
-rw-r--r-- | src/emu/emupal.h | 2 |
2 files changed, 15 insertions, 5 deletions
diff --git a/src/emu/emupal.c b/src/emu/emupal.c index ff71fb29a68..9e420b66a56 100644 --- a/src/emu/emupal.c +++ b/src/emu/emupal.c @@ -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) diff --git a/src/emu/emupal.h b/src/emu/emupal.h index 15677930130..e279190290f 100644 --- a/src/emu/emupal.h +++ b/src/emu/emupal.h @@ -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 |