summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Dirk Best <mail@dirk-best.de>2015-08-12 12:12:05 +0200
committer Dirk Best <mail@dirk-best.de>2015-08-12 12:26:43 +0200
commitb25a7af59f0102588bc7ad28124e5adb94b41ba1 (patch)
tree0aa618810acb91df55a4d74f2b142dc8f9214fa6 /src
parent0448566a4c55d6e40ebe4080d165e156a4eec361 (diff)
emupal: add support for the IIBBGGRR format, only apply intensity bit if
there is a color defined
Diffstat (limited to 'src')
-rw-r--r--src/emu/emupal.c18
-rw-r--r--src/emu/emupal.h2
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