summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author ajrhacker <ajrhacker@users.noreply.github.com>2019-04-04 07:43:09 -0400
committer GitHub <noreply@github.com>2019-04-04 07:43:09 -0400
commit32f29d8eb58675d64b63295e544c85404fa976ff (patch)
treebac595aa48e8d33ab50a83ecdf0b6ab588628a23
parent59315eb1f538b22475205e7bc5e909e862e76532 (diff)
parentdcd08eddfcd279c5349dfdbb5fbd280cb65ef0f2 (diff)
Merge pull request #4854 from cam900/xbgrbbbbggggrrrr_bit0
emupal.cpp : Add xBGRBBBBGGGGRRRR case of palette format
-rw-r--r--src/emu/emupal.cpp14
-rw-r--r--src/emu/emupal.h3
-rw-r--r--src/mame/drivers/deniam.cpp8
-rw-r--r--src/mame/drivers/taito_l.cpp2
-rw-r--r--src/mame/includes/deniam.h3
-rw-r--r--src/mame/video/deniam.cpp9
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 <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; }
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<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);
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;