mirror of
https://github.com/holub/mame
synced 2025-04-24 09:20:02 +03:00
Merge pull request #4854 from cam900/xbgrbbbbggggrrrr_bit0
emupal.cpp : Add xBGRBBBBGGGGRRRR case of palette format
This commit is contained in:
commit
32f29d8eb5
@ -349,6 +349,12 @@ palette_device &palette_device::set_format(xrgbrrrrggggbbbb_bit4_t, u32 entries)
|
||||
return *this;
|
||||
}
|
||||
|
||||
palette_device &palette_device::set_format(xbgrbbbbggggrrrr_bit0_t, u32 entries)
|
||||
{
|
||||
set_format(2, &raw_to_rgb_converter::xBGRBBBBGGGGRRRR_bit0_decoder, entries);
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// GENERIC WRITE HANDLERS
|
||||
@ -773,3 +779,11 @@ rgb_t raw_to_rgb_converter::xRGBRRRRGGGGBBBB_bit4_decoder(u32 raw)
|
||||
u8 const b = pal5bit(((raw >> 0) & 0x0f) | ((raw >> 8) & 0x10));
|
||||
return rgb_t(r, g, b);
|
||||
}
|
||||
|
||||
rgb_t raw_to_rgb_converter::xBGRBBBBGGGGRRRR_bit0_decoder(u32 raw)
|
||||
{
|
||||
u8 const r = pal5bit(((raw << 1) & 0x1e) | ((raw >> 12) & 0x01));
|
||||
u8 const g = pal5bit(((raw >> 3) & 0x1e) | ((raw >> 13) & 0x01));
|
||||
u8 const b = pal5bit(((raw >> 7) & 0x1e) | ((raw >> 14) & 0x01));
|
||||
return rgb_t(r, g, b);
|
||||
}
|
||||
|
@ -160,6 +160,7 @@ public:
|
||||
static rgb_t RRRRGGGGBBBBRGBx_decoder(u32 raw); // bits 3/2/1 are LSb
|
||||
static rgb_t xRGBRRRRGGGGBBBB_bit0_decoder(u32 raw); // bits 14/13/12 are LSb
|
||||
static rgb_t xRGBRRRRGGGGBBBB_bit4_decoder(u32 raw); // bits 14/13/12 are MSb
|
||||
static rgb_t xBGRBBBBGGGGRRRR_bit0_decoder(u32 raw); // bits 12/13/14 are LSb
|
||||
|
||||
private:
|
||||
// internal data
|
||||
@ -246,6 +247,7 @@ public:
|
||||
enum rrrrggggbbbbrgbx_t { RRRRGGGGBBBBRGBx };
|
||||
enum xrgbrrrrggggbbbb_bit0_t { xRGBRRRRGGGGBBBB_bit0 };
|
||||
enum xrgbrrrrggggbbbb_bit4_t { xRGBRRRRGGGGBBBB_bit4 };
|
||||
enum xbgrbbbbggggrrrr_bit0_t { xBGRBBBBGGGGRRRR_bit0 };
|
||||
|
||||
// construction/destruction
|
||||
palette_device(const machine_config &mconfig, const char *tag, device_t *owner, init_delegate &&init, u32 entries = 0U, u32 indirect = 0U);
|
||||
@ -332,6 +334,7 @@ public:
|
||||
palette_device &set_format(rrrrggggbbbbrgbx_t, u32 entries);
|
||||
palette_device &set_format(xrgbrrrrggggbbbb_bit0_t, u32 entries);
|
||||
palette_device &set_format(xrgbrrrrggggbbbb_bit4_t, u32 entries);
|
||||
palette_device &set_format(xbgrbbbbggggrrrr_bit0_t, u32 entries);
|
||||
template <typename T> palette_device &set_format(T x, u32 entries, u32 indirect) { set_format(x, entries); set_indirect_entries(indirect); return *this; }
|
||||
palette_device &set_membits(int membits) { m_membits = membits; m_membits_supplied = true; return *this; }
|
||||
palette_device &set_endianness(endianness_t endianness) { m_endianness = endianness; m_endianness_supplied = true; return *this; }
|
||||
|
@ -79,7 +79,7 @@ void deniam_state::deniam16b_map(address_map &map)
|
||||
map(0x400000, 0x40ffff).ram().w(FUNC(deniam_state::deniam_videoram_w)).share("videoram");
|
||||
map(0x410000, 0x410fff).ram().w(FUNC(deniam_state::deniam_textram_w)).share("textram");
|
||||
map(0x440000, 0x4407ff).writeonly().share("spriteram");
|
||||
map(0x840000, 0x840fff).w(FUNC(deniam_state::deniam_palette_w)).share("paletteram");
|
||||
map(0x840000, 0x840fff).w(m_palette, FUNC(palette_device::write16)).share("palette");
|
||||
map(0xc40000, 0xc40000).w(m_soundlatch, FUNC(generic_latch_8_device::write));
|
||||
map(0xc40002, 0xc40003).rw(FUNC(deniam_state::deniam_coinctrl_r), FUNC(deniam_state::deniam_coinctrl_w));
|
||||
map(0xc40004, 0xc40005).w(FUNC(deniam_state::deniam_irq_ack_w));
|
||||
@ -113,7 +113,7 @@ void deniam_state::deniam16c_map(address_map &map)
|
||||
map(0x400000, 0x40ffff).ram().w(FUNC(deniam_state::deniam_videoram_w)).share("videoram");
|
||||
map(0x410000, 0x410fff).ram().w(FUNC(deniam_state::deniam_textram_w)).share("textram");
|
||||
map(0x440000, 0x4407ff).writeonly().share("spriteram");
|
||||
map(0x840000, 0x840fff).w(FUNC(deniam_state::deniam_palette_w)).share("paletteram");
|
||||
map(0x840000, 0x840fff).w(m_palette, FUNC(palette_device::write16)).share("palette");
|
||||
map(0xc40001, 0xc40001).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
|
||||
map(0xc40002, 0xc40003).rw(FUNC(deniam_state::deniam_coinctrl_r), FUNC(deniam_state::deniam_coinctrl_w));
|
||||
map(0xc40004, 0xc40005).w(FUNC(deniam_state::deniam_irq_ack_w));
|
||||
@ -272,7 +272,7 @@ void deniam_state::deniam16b(machine_config &config)
|
||||
screen.set_palette(m_palette);
|
||||
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_deniam);
|
||||
PALETTE(config, m_palette).set_entries(2048);
|
||||
PALETTE(config, m_palette).set_format(palette_device::xBGRBBBBGGGGRRRR_bit0, 2048); // bit 15 is toggle shadow / hilight?
|
||||
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "mono").front_center();
|
||||
@ -306,7 +306,7 @@ void deniam_state::deniam16c(machine_config &config)
|
||||
screen.set_palette(m_palette);
|
||||
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, gfx_deniam);
|
||||
PALETTE(config, m_palette).set_entries(2048);
|
||||
PALETTE(config, m_palette).set_format(palette_device::xBGRBBBBGGGGRRRR_bit0, 2048); // bit 15 is toggle shadow / hilight?
|
||||
|
||||
/* sound hardware */
|
||||
SPEAKER(config, "mono").front_center();
|
||||
|
@ -1469,7 +1469,7 @@ void taitol_state::l_system_video(machine_config &config)
|
||||
screen.set_palette(m_palette);
|
||||
|
||||
GFXDECODE(config, m_gfxdecode, m_palette, taito_l);
|
||||
PALETTE(config, m_palette, palette_device::BLACK).set_format(palette_device::xBGR_444, 256);
|
||||
PALETTE(config, m_palette, palette_device::BLACK).set_format(palette_device::xBGRBBBBGGGGRRRR_bit0, 256);
|
||||
|
||||
TIMER(config, "scantimer").configure_scanline(FUNC(taitol_state::vbl_interrupt), "screen", 0, 1);
|
||||
}
|
||||
|
@ -19,7 +19,6 @@ public:
|
||||
m_videoram(*this, "videoram"),
|
||||
m_textram(*this, "textram"),
|
||||
m_spriteram(*this, "spriteram"),
|
||||
m_paletteram(*this, "paletteram"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_audiocpu(*this, "audiocpu"),
|
||||
m_oki(*this, "oki"),
|
||||
@ -38,7 +37,6 @@ private:
|
||||
required_shared_ptr<uint16_t> m_videoram;
|
||||
required_shared_ptr<uint16_t> m_textram;
|
||||
required_shared_ptr<uint16_t> m_spriteram;
|
||||
required_shared_ptr<uint16_t> m_paletteram;
|
||||
|
||||
/* video-related */
|
||||
tilemap_t *m_fg_tilemap;
|
||||
@ -63,7 +61,6 @@ private:
|
||||
DECLARE_WRITE16_MEMBER(deniam_irq_ack_w);
|
||||
DECLARE_WRITE16_MEMBER(deniam_videoram_w);
|
||||
DECLARE_WRITE16_MEMBER(deniam_textram_w);
|
||||
DECLARE_WRITE16_MEMBER(deniam_palette_w);
|
||||
DECLARE_READ16_MEMBER(deniam_coinctrl_r);
|
||||
DECLARE_WRITE16_MEMBER(deniam_coinctrl_w);
|
||||
DECLARE_WRITE8_MEMBER(deniam16b_oki_rom_bank_w);
|
||||
|
@ -135,15 +135,6 @@ WRITE16_MEMBER(deniam_state::deniam_textram_w)
|
||||
}
|
||||
|
||||
|
||||
WRITE16_MEMBER(deniam_state::deniam_palette_w)
|
||||
{
|
||||
data = COMBINE_DATA(&m_paletteram[offset]);
|
||||
int r = ((data << 1) & 0x1e) | ((data >> 12) & 0x01);
|
||||
int g = ((data >> 3) & 0x1e) | ((data >> 13) & 0x01);
|
||||
int b = ((data >> 7) & 0x1e) | ((data >> 14) & 0x01);
|
||||
m_palette->set_pen_color(offset, pal5bit(r), pal5bit(g), pal5bit(b));
|
||||
}
|
||||
|
||||
READ16_MEMBER(deniam_state::deniam_coinctrl_r)
|
||||
{
|
||||
return m_coinctrl;
|
||||
|
Loading…
Reference in New Issue
Block a user