summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Dirk Best <mail@dirk-best.de>2021-01-27 17:00:15 +0100
committer Dirk Best <mail@dirk-best.de>2021-01-29 01:47:57 +0100
commitf6b89fdf38b0dcbbadc4d8842d6670bfa7bfe8dc (patch)
tree91e213493130886bfa4ebf21c458ca54f3df6cf8
parenta0fdfb242d58a64766421ddec27462399b1f4429 (diff)
luckgrln: Use generic xBGR_555 palette support, decrease amount of colors
-rw-r--r--src/mame/drivers/luckgrln.cpp35
1 files changed, 10 insertions, 25 deletions
diff --git a/src/mame/drivers/luckgrln.cpp b/src/mame/drivers/luckgrln.cpp
index 1f51af1feb8..5bce0b7dc62 100644
--- a/src/mame/drivers/luckgrln.cpp
+++ b/src/mame/drivers/luckgrln.cpp
@@ -99,6 +99,7 @@ public:
m_maincpu(*this, "maincpu"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette"),
+ m_palette_ram(*this, "palette", 0x1000, ENDIANNESS_LITTLE),
m_lamps(*this, "lamp%u", 0U) { }
void init_luckgrln();
@@ -119,12 +120,12 @@ private:
required_device<hd647180x_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
+ memory_share_creator<uint8_t> m_palette_ram;
output_finder<12> m_lamps;
uint8_t m_nmi_enable;
tilemap_t *m_reel_tilemap[4];
- int m_palette_count;
- uint8_t m_palette_ram[0x10000];
+ uint16_t m_palette_index;
template<uint8_t Reel> void reel_ram_w(offs_t offset, uint8_t data);
template<uint8_t Reel> void reel_attr_w(offs_t offset, uint8_t data);
@@ -199,8 +200,7 @@ void luckgrln_state::video_start()
m_reel_tilemap[i]->set_transparent_pen(0);
}
- save_item(NAME(m_palette_count));
- save_item(NAME(m_palette_ram));
+ save_item(NAME(m_palette_index));
}
uint32_t luckgrln_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
@@ -356,33 +356,18 @@ void luckgrln_state::output_w(uint8_t data)
void luckgrln_state::palette_offset_low_w(uint8_t data)
{
- m_palette_count = data<<1;
+ m_palette_index = (m_palette_index & 0x0e00) | (data << 1);
}
+
void luckgrln_state::palette_offset_high_w(uint8_t data)
{
- m_palette_count = m_palette_count | data<<9;
+ m_palette_index = (data << 9) | (m_palette_index & 0x01fe);
}
-
void luckgrln_state::palette_w(uint8_t data)
{
- m_palette_ram[m_palette_count] = data;
-
-
- {
- int offs = m_palette_count&~0x1;
- uint16_t dat = m_palette_ram[offs] | m_palette_ram[offs+1]<<8;
-
- int r = (dat >> 0) & 0x1f;
- int g = (dat >> 5) & 0x1f;
- int b = (dat >> 10) & 0x1f;
-
- m_palette->set_pen_color(offs/2, pal5bit(r), pal5bit(g), pal5bit(b));
-
- }
-
- m_palette_count++;
-
+ m_palette->write8(m_palette_index, data);
+ m_palette_index = (m_palette_index + 1) & 0x0fff;
}
/* Analyzing the lamps, the game should have a 12-buttons control layout */
@@ -883,7 +868,7 @@ void luckgrln_state::luckgrln(machine_config &config)
screen.set_screen_update(FUNC(luckgrln_state::screen_update));
GFXDECODE(config, m_gfxdecode, m_palette, gfx_luckgrln);
- PALETTE(config, m_palette).set_entries(0x8000);
+ PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 2048);
SPEAKER(config, "mono").front_center();
}