From dcd08eddfcd279c5349dfdbb5fbd280cb65ef0f2 Mon Sep 17 00:00:00 2001 From: cam900 Date: Wed, 3 Apr 2019 18:49:38 +0900 Subject: [PATCH] emupal.cpp : Add xBGRBBBBGGGGRRRR case of palette format deniam.cpp : Add note --- src/emu/emupal.cpp | 14 ++++++++++++++ src/emu/emupal.h | 3 +++ src/mame/drivers/deniam.cpp | 8 ++++---- src/mame/drivers/taito_l.cpp | 2 +- src/mame/includes/deniam.h | 3 --- src/mame/video/deniam.cpp | 9 --------- 6 files changed, 22 insertions(+), 17 deletions(-) diff --git a/src/emu/emupal.cpp b/src/emu/emupal.cpp index 6a998c4849e..96fe75638e1 100644 --- a/src/emu/emupal.cpp +++ b/src/emu/emupal.cpp @@ -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); +} diff --git a/src/emu/emupal.h b/src/emu/emupal.h index b4f52ac2a55..00b3d0863f2 100644 --- a/src/emu/emupal.h +++ b/src/emu/emupal.h @@ -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 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; } diff --git a/src/mame/drivers/deniam.cpp b/src/mame/drivers/deniam.cpp index d03c39074ee..1747059a45c 100644 --- a/src/mame/drivers/deniam.cpp +++ b/src/mame/drivers/deniam.cpp @@ -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(); diff --git a/src/mame/drivers/taito_l.cpp b/src/mame/drivers/taito_l.cpp index 034a0c37395..a8b30285d78 100644 --- a/src/mame/drivers/taito_l.cpp +++ b/src/mame/drivers/taito_l.cpp @@ -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); } diff --git a/src/mame/includes/deniam.h b/src/mame/includes/deniam.h index a6af580f140..6a36f0345c1 100644 --- a/src/mame/includes/deniam.h +++ b/src/mame/includes/deniam.h @@ -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 m_videoram; required_shared_ptr m_textram; required_shared_ptr m_spriteram; - required_shared_ptr 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); diff --git a/src/mame/video/deniam.cpp b/src/mame/video/deniam.cpp index 14377c9539f..8cf4d069d71 100644 --- a/src/mame/video/deniam.cpp +++ b/src/mame/video/deniam.cpp @@ -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;