Add the rest of the 3-bit palettes and add the possiblity to set

individual r/g/b levels for pens
This commit is contained in:
Dirk Best 2015-07-29 15:19:27 +02:00
parent a9a2c75b49
commit 6f12e6cf06
4 changed files with 130 additions and 0 deletions

View File

@ -826,6 +826,50 @@ void palette_device::palette_init_3bit_rgb(palette_device &palette)
}
/*-------------------------------------------------
3bit_rbg - 8-color rgb
-------------------------------------------------*/
void palette_device::palette_init_3bit_rbg(palette_device &palette)
{
for (int i = 0; i < 8; i++)
palette.set_pen_color(i, rgb_t(pal1bit(i >> 0), pal1bit(i >> 2), pal1bit(i >> 1)));
}
/*-------------------------------------------------
3bit_brg - 8-color rgb
-------------------------------------------------*/
void palette_device::palette_init_3bit_brg(palette_device &palette)
{
for (int i = 0; i < 8; i++)
palette.set_pen_color(i, rgb_t(pal1bit(i >> 1), pal1bit(i >> 2), pal1bit(i >> 0)));
}
/*-------------------------------------------------
3bit_grb - 8-color rgb
-------------------------------------------------*/
void palette_device::palette_init_3bit_grb(palette_device &palette)
{
for (int i = 0; i < 8; i++)
palette.set_pen_color(i, rgb_t(pal1bit(i >> 1), pal1bit(i >> 0), pal1bit(i >> 2)));
}
/*-------------------------------------------------
3bit_gbr - 8-color rgb
-------------------------------------------------*/
void palette_device::palette_init_3bit_gbr(palette_device &palette)
{
for (int i = 0; i < 8; i++)
palette.set_pen_color(i, rgb_t(pal1bit(i >> 2), pal1bit(i >> 0), pal1bit(i >> 1)));
}
/*-------------------------------------------------
3bit_bgr - 8-color rgb
-------------------------------------------------*/

View File

@ -236,6 +236,22 @@
MCFG_PALETTE_ADD(_tag, 8) \
palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_3bit_rgb), downcast<palette_device *>(device)));
#define MCFG_PALETTE_ADD_3BIT_RBG(_tag) \
MCFG_PALETTE_ADD(_tag, 8) \
palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_3bit_rbg), downcast<palette_device *>(device)));
#define MCFG_PALETTE_ADD_3BIT_BRG(_tag) \
MCFG_PALETTE_ADD(_tag, 8) \
palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_3bit_brg), downcast<palette_device *>(device)));
#define MCFG_PALETTE_ADD_3BIT_GRB(_tag) \
MCFG_PALETTE_ADD(_tag, 8) \
palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_3bit_grb), downcast<palette_device *>(device)));
#define MCFG_PALETTE_ADD_3BIT_GBR(_tag) \
MCFG_PALETTE_ADD(_tag, 8) \
palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_3bit_gbr), downcast<palette_device *>(device)));
#define MCFG_PALETTE_ADD_3BIT_BGR(_tag) \
MCFG_PALETTE_ADD(_tag, 8) \
palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_3bit_bgr), downcast<palette_device *>(device)));
@ -367,6 +383,9 @@ public:
// setters
void set_pen_color(pen_t pen, rgb_t rgb) { m_palette->entry_set_color(pen, rgb); }
void set_pen_red_level(pen_t pen, UINT8 level) { m_palette->entry_set_red_level(pen, level); }
void set_pen_green_level(pen_t pen, UINT8 level) { m_palette->entry_set_green_level(pen, level); }
void set_pen_blue_level(pen_t pen, UINT8 level) { m_palette->entry_set_blue_level(pen, level); }
void set_pen_color(pen_t pen, UINT8 r, UINT8 g, UINT8 b) { m_palette->entry_set_color(pen, rgb_t(r, g, b)); }
void set_pen_colors(pen_t color_base, const rgb_t *colors, int color_count) { while (color_count--) set_pen_color(color_base++, *colors++); }
void set_pen_colors(pen_t color_base, const std::vector<rgb_t> &colors) { for(unsigned int i=0; i != colors.size(); i++) set_pen_color(color_base+i, colors[i]); }
@ -405,6 +424,10 @@ public:
void palette_init_monochrome_green_highlight(palette_device &palette);
void palette_init_monochrome_yellow(palette_device &palette);
void palette_init_3bit_rgb(palette_device &palette);
void palette_init_3bit_rbg(palette_device &palette);
void palette_init_3bit_brg(palette_device &palette);
void palette_init_3bit_grb(palette_device &palette);
void palette_init_3bit_gbr(palette_device &palette);
void palette_init_3bit_bgr(palette_device &palette);
void palette_init_RRRRGGGGBBBB_proms(palette_device &palette);
void palette_init_RRRRRGGGGGBBBBB(palette_device &palette);

View File

@ -364,6 +364,66 @@ void palette_t::entry_set_color(UINT32 index, rgb_t rgb)
}
//-------------------------------------------------
// entry_set_red_level - set the red level for a
// given palette index
//-------------------------------------------------
void palette_t::entry_set_red_level(UINT32 index, UINT8 level)
{
// if out of range, or unchanged, ignore
if (index >= m_numcolors || m_entry_color[index].r() == level)
return;
// set the level
m_entry_color[index].set_r(level);
// update across all groups
for (int groupnum = 0; groupnum < m_numgroups; groupnum++)
update_adjusted_color(groupnum, index);
}
//-------------------------------------------------
// entry_set_green_level - set the green level for a
// given palette index
//-------------------------------------------------
void palette_t::entry_set_green_level(UINT32 index, UINT8 level)
{
// if out of range, or unchanged, ignore
if (index >= m_numcolors || m_entry_color[index].g() == level)
return;
// set the level
m_entry_color[index].set_g(level);
// update across all groups
for (int groupnum = 0; groupnum < m_numgroups; groupnum++)
update_adjusted_color(groupnum, index);
}
//-------------------------------------------------
// entry_set_blue_level - set the blue level for a
// given palette index
//-------------------------------------------------
void palette_t::entry_set_blue_level(UINT32 index, UINT8 level)
{
// if out of range, or unchanged, ignore
if (index >= m_numcolors || m_entry_color[index].b() == level)
return;
// set the level
m_entry_color[index].set_b(level);
// update across all groups
for (int groupnum = 0; groupnum < m_numgroups; groupnum++)
update_adjusted_color(groupnum, index);
}
//-------------------------------------------------
// entry_set_contrast - set the contrast
// adjustment for a single palette index

View File

@ -166,6 +166,9 @@ public:
// entry setters
void entry_set_color(UINT32 index, rgb_t rgb);
void entry_set_red_level(UINT32 index, UINT8 level);
void entry_set_green_level(UINT32 index, UINT8 level);
void entry_set_blue_level(UINT32 index, UINT8 level);
void entry_set_contrast(UINT32 index, float contrast);
// entry list getters