diff --git a/src/mame/drivers/dreamwld.c b/src/mame/drivers/dreamwld.c index 61fc8e2948e..970a2105984 100644 --- a/src/mame/drivers/dreamwld.c +++ b/src/mame/drivers/dreamwld.c @@ -127,7 +127,6 @@ public: dreamwld_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_spriteram(*this, "spriteram"), - m_paletteram(*this, "paletteram"), m_bg_videoram(*this, "bg_videoram"), m_bg2_videoram(*this, "bg2_videoram"), m_vregs(*this, "vregs"), @@ -138,7 +137,6 @@ public: /* memory pointers */ required_shared_ptr m_spriteram; - required_shared_ptr m_paletteram; required_shared_ptr m_bg_videoram; required_shared_ptr m_bg2_videoram; required_shared_ptr m_vregs; @@ -160,7 +158,6 @@ public: DECLARE_READ32_MEMBER(dreamwld_protdata_r); DECLARE_WRITE32_MEMBER(dreamwld_6295_0_bank_w); DECLARE_WRITE32_MEMBER(dreamwld_6295_1_bank_w); - DECLARE_WRITE32_MEMBER(dreamwld_palette_w); TILE_GET_INFO_MEMBER(get_dreamwld_bg_tile_info); TILE_GET_INFO_MEMBER(get_dreamwld_bg2_tile_info); virtual void machine_start(); @@ -446,30 +443,12 @@ WRITE32_MEMBER(dreamwld_state::dreamwld_6295_1_bank_w) logerror("OKI1: unk bank write %x mem_mask %8x\n", data, mem_mask); } -// why doesn't using paletteram_xRRRRRGGGGGBBBBB_word_w with a 16-bit handler work? colours are -// severely corrupt on dream world's semicom screen + many sprites, seems palette values get duplicated. -WRITE32_MEMBER(dreamwld_state::dreamwld_palette_w) -{ - UINT16 dat; - int color; - - COMBINE_DATA(&m_paletteram[offset]); - color = offset * 2; - - dat = m_paletteram[offset] & 0x7fff; - m_palette->set_pen_color(color+1, pal5bit(dat >> 10), pal5bit(dat >> 5), pal5bit(dat >> 0)); - - dat = (m_paletteram[offset] >> 16) & 0x7fff; - m_palette->set_pen_color(color, pal5bit(dat >> 10), pal5bit(dat >> 5), pal5bit(dat >> 0)); -} - - static ADDRESS_MAP_START( baryon_map, AS_PROGRAM, 32, dreamwld_state ) AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_WRITENOP AM_RANGE(0x400000, 0x401fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x600000, 0x601fff) AM_RAM AM_WRITE(dreamwld_palette_w) AM_SHARE("paletteram") + AM_RANGE(0x600000, 0x601fff) AM_DEVREADWRITE16("palette", palette_device, read, write, 0xffffffff) AM_SHARE("palette") AM_RANGE(0x800000, 0x801fff) AM_RAM_WRITE(dreamwld_bg_videoram_w ) AM_SHARE("bg_videoram") AM_RANGE(0x802000, 0x803fff) AM_RAM_WRITE(dreamwld_bg2_videoram_w ) AM_SHARE("bg2_videoram") AM_RANGE(0x804000, 0x805fff) AM_RAM AM_SHARE("vregs") // scroll regs etc. @@ -605,6 +584,9 @@ static MACHINE_CONFIG_START( baryon, dreamwld_state ) MCFG_SCREEN_VBLANK_DRIVER(dreamwld_state, screen_eof_dreamwld) MCFG_PALETTE_ADD("palette", 0x1000) + MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) + MCFG_PALETTE_ENDIANNESS(ENDIANNESS_LITTLE) + MCFG_GFXDECODE_ADD("gfxdecode", dreamwld) diff --git a/src/mame/drivers/ultrsprt.c b/src/mame/drivers/ultrsprt.c index 79f659df1f3..807a6e3a7f4 100644 --- a/src/mame/drivers/ultrsprt.c +++ b/src/mame/drivers/ultrsprt.c @@ -34,7 +34,6 @@ public: DECLARE_READ32_MEMBER(vram_r); DECLARE_WRITE32_MEMBER(vram_w); - DECLARE_WRITE32_MEMBER(palette_w); DECLARE_READ32_MEMBER(eeprom_r); DECLARE_WRITE32_MEMBER(eeprom_w); DECLARE_WRITE32_MEMBER(int_ack_w); @@ -78,16 +77,6 @@ UINT32 ultrsprt_state::screen_update_ultrsprt(screen_device &screen, bitmap_ind1 } -WRITE32_MEMBER(ultrsprt_state::palette_w) -{ - COMBINE_DATA(&m_generic_paletteram_32[offset]); - data = m_generic_paletteram_32[offset]; - - m_palette->set_pen_color((offset*2)+0, rgb_t(pal5bit(data >> 26), pal5bit(data >> 21), pal5bit(data >> 16))); - m_palette->set_pen_color((offset*2)+1, rgb_t(pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0))); -} - - /*****************************************************************************/ WRITE32_MEMBER(ultrsprt_state::int_ack_w) @@ -146,7 +135,7 @@ static ADDRESS_MAP_START( ultrsprt_map, AS_PROGRAM, 32, ultrsprt_state ) AM_RANGE(0x700000c0, 0x700000cf) AM_WRITENOP // Written following DMA interrupt - unused int ack? AM_RANGE(0x700000e0, 0x700000e3) AM_WRITE(int_ack_w) AM_RANGE(0x7f000000, 0x7f01ffff) AM_RAM AM_SHARE("workram") - AM_RANGE(0x7f700000, 0x7f703fff) AM_RAM_WRITE(palette_w) AM_SHARE("paletteram") + AM_RANGE(0x7f700000, 0x7f703fff) AM_DEVREADWRITE16("palette", palette_device, read, write, 0xffffffff) AM_SHARE("palette") AM_RANGE(0x7f800000, 0x7f9fffff) AM_MIRROR(0x00600000) AM_ROM AM_REGION("program", 0) ADDRESS_MAP_END @@ -242,6 +231,8 @@ static MACHINE_CONFIG_START( ultrsprt, ultrsprt_state ) MCFG_SCREEN_UPDATE_DRIVER(ultrsprt_state, screen_update_ultrsprt) MCFG_PALETTE_ADD("palette", 8192) + MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) + MCFG_PALETTE_ENDIANNESS(ENDIANNESS_LITTLE) /* sound hardware */ MCFG_K056800_ADD("k056800", XTAL_18_432MHz)