From eb7b99a72e9c29027cee18611ee665fed6d5de77 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Sat, 12 Dec 2015 23:34:57 +0000 Subject: [PATCH] make both halves of the banked palette available for use, doesn't help with what i was looking at tho (nw) --- src/mame/drivers/dooyong.cpp | 8 ++++---- src/mame/includes/dooyong.h | 3 +-- src/mame/video/dooyong.cpp | 23 ++++++++++++++++------- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/src/mame/drivers/dooyong.cpp b/src/mame/drivers/dooyong.cpp index 3421da3a00d..11eac2c0f8e 100644 --- a/src/mame/drivers/dooyong.cpp +++ b/src/mame/drivers/dooyong.cpp @@ -149,7 +149,7 @@ static ADDRESS_MAP_START( pollux_map, AS_PROGRAM, 8, dooyong_z80_ym2203_state ) AM_RANGE(0xf010, 0xf010) AM_WRITE(soundlatch_byte_w) AM_RANGE(0xf018, 0xf01f) AM_WRITE(bgscroll_w) AM_RANGE(0xf020, 0xf027) AM_WRITE(fgscroll_w) - AM_RANGE(0xf800, 0xffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") + AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(paletteram_flytiger_w) ADDRESS_MAP_END static ADDRESS_MAP_START( gulfstrm_map, AS_PROGRAM, 8, dooyong_z80_ym2203_state ) @@ -206,7 +206,7 @@ static ADDRESS_MAP_START( flytiger_map, AS_PROGRAM, 8, dooyong_z80_state ) AM_RANGE(0xe020, 0xe020) AM_WRITE(soundlatch_byte_w) AM_RANGE(0xe030, 0xe037) AM_WRITE(bgscroll_w) AM_RANGE(0xe040, 0xe047) AM_WRITE(fgscroll_w) - AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(paletteram_flytiger_w) AM_SHARE("flytiger_palram") + AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(paletteram_flytiger_w) AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram") ADDRESS_MAP_END @@ -944,7 +944,7 @@ static MACHINE_CONFIG_START( pollux, dooyong_z80_ym2203_state ) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", lastday) - MCFG_PALETTE_ADD("palette", 1024) + MCFG_PALETTE_ADD("palette", 1024*2) MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) MCFG_VIDEO_START_OVERRIDE(dooyong_z80_ym2203_state, pollux) @@ -1012,7 +1012,7 @@ static MACHINE_CONFIG_START( flytiger, dooyong_z80_state ) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", flytiger) - MCFG_PALETTE_ADD("palette", 1024) + MCFG_PALETTE_ADD("palette", 1024*2) MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) MCFG_VIDEO_START_OVERRIDE(dooyong_z80_state, flytiger) diff --git a/src/mame/includes/dooyong.h b/src/mame/includes/dooyong.h index d54a29bdc24..bd4b69d3bfa 100644 --- a/src/mame/includes/dooyong.h +++ b/src/mame/includes/dooyong.h @@ -54,7 +54,6 @@ public: dooyong_z80_state(const machine_config &mconfig, device_type type, const char *tag) : dooyong_state(mconfig, type, tag), m_txvideoram(*this, "txvideoram"), - m_paletteram_flytiger(*this, "flytiger_palram"), m_spriteram(*this, "spriteram") { } @@ -83,7 +82,7 @@ public: DECLARE_VIDEO_START(primella); required_shared_ptr m_txvideoram; - optional_shared_ptr m_paletteram_flytiger; + UINT8* m_paletteram_flytiger; UINT8 m_sprites_disabled; UINT8 m_flytiger_palette_bank; UINT8 m_flytiger_pri; diff --git a/src/mame/video/dooyong.cpp b/src/mame/video/dooyong.cpp index 128450d9279..3b8455009b9 100644 --- a/src/mame/video/dooyong.cpp +++ b/src/mame/video/dooyong.cpp @@ -108,11 +108,14 @@ WRITE8_MEMBER(dooyong_z80_ym2203_state::pollux_ctrl_w) coin_counter_w(machine(), 0, data & 0x80); coin_counter_w(machine(), 1, data & 0x40); - /* bit 1 is used but unknown */ + /* bit 1 is used but unknown - possibly palette banking */ + m_flytiger_palette_bank = (data & 0x02)^2; /* bit 2 is continuously toggled (unknown) */ /* bit 4 is used but unknown */ } + + WRITE8_MEMBER(dooyong_z80_state::primella_ctrl_w) { @@ -132,12 +135,12 @@ WRITE8_MEMBER(dooyong_z80_state::primella_ctrl_w) WRITE8_MEMBER(dooyong_z80_state::paletteram_flytiger_w) { - if (m_flytiger_palette_bank) - { - m_paletteram_flytiger[offset] = data; - UINT16 const value = m_paletteram_flytiger[offset & ~1] | (m_paletteram_flytiger[offset | 1] << 8); - m_palette->set_pen_color(offset/2, pal5bit(value >> 10), pal5bit(value >> 5), pal5bit(value >> 0)); - } + if (!m_flytiger_palette_bank) offset+= 0x800; + + m_paletteram_flytiger[offset] = data; + UINT16 const value = m_paletteram_flytiger[offset & ~1] | (m_paletteram_flytiger[offset | 1] << 8); + m_palette->set_pen_color(offset/2, pal5bit(value >> 10), pal5bit(value >> 5), pal5bit(value >> 0)); + } WRITE8_MEMBER(dooyong_z80_state::flytiger_ctrl_w) @@ -522,6 +525,9 @@ VIDEO_START_MEMBER(dooyong_z80_ym2203_state, pollux) m_fg_gfx = 3; m_tx_tilemap_mode = 0; + m_paletteram_flytiger = auto_alloc_array_clear(machine(), UINT8, 0x1000); + save_pointer(NAME(m_paletteram_flytiger), 0x1000); + /* Create tilemaps */ m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(dooyong_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS, 32, 32, 32, 8); @@ -592,6 +598,9 @@ VIDEO_START_MEMBER(dooyong_z80_state, flytiger) m_fg_gfx = 3; m_tx_tilemap_mode = 0; + m_paletteram_flytiger = auto_alloc_array_clear(machine(), UINT8, 0x1000); + save_pointer(NAME(m_paletteram_flytiger), 0x1000); + /* Create tilemaps */ m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(dooyong_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS, 32, 32, 32, 8);