From c0c4cd42f7ef5fdd9346a03b07f3edd0f9e10e92 Mon Sep 17 00:00:00 2001 From: cam900 Date: Sun, 18 Feb 2018 01:25:47 +0900 Subject: =?UTF-8?q?cbuster=20:=20Cleanup=20duplicates,=20Move=20spriteram?= =?UTF-8?q?=20buffer=20functions=20to=20buff=E2=80=A6=20(#3223)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * cbuster : Cleanup duplicates, Move spriteram buffer functions to buffered_spriteram16_device, Remove unneeded rambank/shared ptr * cbuster : Minor fix --- src/mame/drivers/cbuster.cpp | 25 +++++++++++------------ src/mame/includes/cbuster.h | 47 +++++++++++++++++--------------------------- src/mame/video/cbuster.cpp | 24 ++++++++++------------ 3 files changed, 40 insertions(+), 56 deletions(-) diff --git a/src/mame/drivers/cbuster.cpp b/src/mame/drivers/cbuster.cpp index 5e051c115fd..14432deceb3 100644 --- a/src/mame/drivers/cbuster.cpp +++ b/src/mame/drivers/cbuster.cpp @@ -57,15 +57,15 @@ WRITE16_MEMBER(cbuster_state::twocrude_control_w) switch (offset << 1) { case 0: /* DMA flag */ - memcpy(m_spriteram16_buffer, m_spriteram16, 0x800); + m_spriteram->copy(); return; case 6: /* IRQ ack */ + m_maincpu->set_input_line(4, CLEAR_LINE); return; case 2: /* Sound CPU write */ m_soundlatch->write(space, 0, data & 0xff); - m_audiocpu->set_input_line(0, HOLD_LINE); return; case 4: /* Protection, maybe this is a PAL on the board? @@ -128,7 +128,7 @@ READ16_MEMBER(cbuster_state::twocrude_control_r) ADDRESS_MAP_START(cbuster_state::twocrude_map) AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x083fff) AM_RAM AM_SHARE("ram") + AM_RANGE(0x080000, 0x083fff) AM_RAM AM_RANGE(0x0a0000, 0x0a1fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf1_data_r, pf1_data_w) AM_RANGE(0x0a2000, 0x0a2fff) AM_DEVREADWRITE("tilegen1", deco16ic_device, pf2_data_r, pf2_data_w) @@ -140,7 +140,7 @@ ADDRESS_MAP_START(cbuster_state::twocrude_map) AM_RANGE(0x0ac000, 0x0ac7ff) AM_RAM AM_SHARE("pf3_rowscroll") AM_RANGE(0x0ae000, 0x0ae7ff) AM_RAM AM_SHARE("pf4_rowscroll") - AM_RANGE(0x0b0000, 0x0b07ff) AM_RAM AM_SHARE("spriteram16") + AM_RANGE(0x0b0000, 0x0b07ff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0x0b4000, 0x0b4001) AM_WRITENOP AM_RANGE(0x0b5000, 0x0b500f) AM_DEVWRITE("tilegen1", deco16ic_device, pf_control_w) AM_RANGE(0x0b6000, 0x0b600f) AM_DEVWRITE("tilegen2", deco16ic_device, pf_control_w) @@ -150,7 +150,6 @@ ADDRESS_MAP_START(cbuster_state::twocrude_map) ADDRESS_MAP_END - /******************************************************************************/ ADDRESS_MAP_START(cbuster_state::sound_map) @@ -160,7 +159,7 @@ ADDRESS_MAP_START(cbuster_state::sound_map) AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_device, read, write) AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_device, read, write) AM_RANGE(0x140000, 0x140001) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK("bank8") + AM_RANGE(0x1f0000, 0x1f1fff) AM_RAM AM_RANGE(0x1fec00, 0x1fec01) AM_DEVWRITE("audiocpu", h6280_device, timer_w) AM_RANGE(0x1ff400, 0x1ff403) AM_DEVWRITE("audiocpu", h6280_device, irq_status_w) ADDRESS_MAP_END @@ -280,9 +279,9 @@ static const gfx_layout spritelayout = }; static GFXDECODE_START( cbuster ) - GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 0x500 ) /* Characters 8x8 */ - GFXDECODE_ENTRY( "gfx1", 0, tilelayout, 0, 0x500 ) /* Tiles 16x16 */ - GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0, 0x500 ) /* Tiles 16x16 */ + GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 128 ) /* Characters 8x8 */ + GFXDECODE_ENTRY( "gfx1", 0, tilelayout, 0, 128 ) /* Tiles 16x16 */ + GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0, 128 ) /* Tiles 16x16 */ GFXDECODE_ENTRY( "gfx3", 0, spritelayout, 0x100, 80 ) /* Sprites 16x16 */ GFXDECODE_END @@ -310,12 +309,11 @@ MACHINE_CONFIG_START(cbuster_state::twocrude) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68000, XTAL(24'000'000)/2) /* Custom chip 59 @ 12MHz Verified */ MCFG_CPU_PROGRAM_MAP(twocrude_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", cbuster_state, irq4_line_hold)/* VBL */ + MCFG_CPU_VBLANK_INT_DRIVER("screen", cbuster_state, irq4_line_assert)/* VBL */ MCFG_CPU_ADD("audiocpu", H6280, XTAL(24'000'000)/4) /* Custom chip 45, 6MHz Verified */ MCFG_CPU_PROGRAM_MAP(sound_map) - MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(58) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529)) @@ -327,6 +325,7 @@ MACHINE_CONFIG_START(cbuster_state::twocrude) MCFG_PALETTE_ADD("palette", 2048) MCFG_PALETTE_FORMAT(XBGR) + MCFG_BUFFERED_SPRITERAM16_ADD("spriteram") MCFG_DEVICE_ADD("tilegen1", DECO16IC, 0) MCFG_DECO16IC_SPLIT(0) @@ -368,6 +367,7 @@ MACHINE_CONFIG_START(cbuster_state::twocrude) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("audiocpu", 0)) // YM2203_PITCH_HACK - Pitch is too low at 1.3425MHz (see also stfight.cpp) MCFG_SOUND_ADD("ym1", YM2203, XTAL(32'220'000)/24 * 3) /* 1.3425MHz Verified */ @@ -375,8 +375,7 @@ MACHINE_CONFIG_START(cbuster_state::twocrude) MCFG_YM2151_ADD("ym2", XTAL(32'220'000)/9) /* 3.58MHz Verified */ MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu", 1)) /* IRQ2 */ - MCFG_SOUND_ROUTE(0, "mono", 0.45) - MCFG_SOUND_ROUTE(1, "mono", 0.45) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45) MCFG_OKIM6295_ADD("oki1", XTAL(32'220'000)/32, PIN7_HIGH) /* 1.0068MHz Verified */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) diff --git a/src/mame/includes/cbuster.h b/src/mame/includes/cbuster.h index 8d59795860d..4cc7d0b74de 100644 --- a/src/mame/includes/cbuster.h +++ b/src/mame/includes/cbuster.h @@ -7,6 +7,7 @@ *************************************************************************/ #include "machine/gen_latch.h" +#include "video/bufsprite.h" #include "video/decospr.h" #include "video/deco16ic.h" @@ -15,48 +16,36 @@ class cbuster_state : public driver_device public: cbuster_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_ram(*this, "ram"), - m_pf1_rowscroll(*this, "pf1_rowscroll"), - m_pf2_rowscroll(*this, "pf2_rowscroll"), - m_pf3_rowscroll(*this, "pf3_rowscroll"), - m_pf4_rowscroll(*this, "pf4_rowscroll"), - m_spriteram16(*this, "spriteram16"), - m_paletteram(*this, "palette"), - m_paletteram_ext(*this, "palette_ext"), - m_sprgen(*this, "spritegen"), m_maincpu(*this, "maincpu"), m_audiocpu(*this, "audiocpu"), - m_deco_tilegen1(*this, "tilegen1"), - m_deco_tilegen2(*this, "tilegen2"), + m_deco_tilegen(*this, "tilegen%u", 1), m_palette(*this, "palette"), - m_soundlatch(*this, "soundlatch") + m_spriteram(*this, "spriteram"), + m_soundlatch(*this, "soundlatch"), + m_sprgen(*this, "spritegen"), + m_pf_rowscroll(*this, "pf%u_rowscroll", 1), + m_paletteram(*this, "palette"), + m_paletteram_ext(*this, "palette_ext") { } + + /* devices */ + required_device m_maincpu; + required_device m_audiocpu; + required_device_array m_deco_tilegen; + required_device m_palette; + required_device m_spriteram; + required_device m_soundlatch; + required_device m_sprgen; /* memory pointers */ - required_shared_ptr m_ram; - required_shared_ptr m_pf1_rowscroll; - required_shared_ptr m_pf2_rowscroll; - required_shared_ptr m_pf3_rowscroll; - required_shared_ptr m_pf4_rowscroll; - required_shared_ptr m_spriteram16; + required_shared_ptr_array m_pf_rowscroll; required_shared_ptr m_paletteram; required_shared_ptr m_paletteram_ext; - optional_device m_sprgen; - - uint16_t m_spriteram16_buffer[0x400]; /* misc */ uint16_t m_prot; int m_pri; - /* devices */ - required_device m_maincpu; - required_device m_audiocpu; - required_device m_deco_tilegen1; - required_device m_deco_tilegen2; - required_device m_palette; - required_device m_soundlatch; - DECLARE_WRITE16_MEMBER(twocrude_control_w); DECLARE_READ16_MEMBER(twocrude_control_r); DECLARE_DRIVER_INIT(twocrude); diff --git a/src/mame/video/cbuster.cpp b/src/mame/video/cbuster.cpp index f0823c0c105..85b1cddc386 100644 --- a/src/mame/video/cbuster.cpp +++ b/src/mame/video/cbuster.cpp @@ -11,10 +11,6 @@ /******************************************************************************/ - -/******************************************************************************/ - - /******************************************************************************/ void cbuster_state::video_start() @@ -66,35 +62,35 @@ WRITE16_MEMBER(cbuster_state::cbuster_palette_ext_w) uint32_t cbuster_state::screen_update_twocrude(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { address_space &space = machine().dummy_space(); - uint16_t flip = m_deco_tilegen1->pf_control_r(space, 0, 0xffff); + uint16_t flip = m_deco_tilegen[0]->pf_control_r(space, 0, 0xffff); flip_screen_set(!BIT(flip, 7)); m_sprgen->set_flip_screen(!BIT(flip, 7)); - m_sprgen->draw_sprites(bitmap, cliprect, m_spriteram16_buffer, 0x400); + m_sprgen->draw_sprites(bitmap, cliprect, m_spriteram->buffer(), 0x400); - m_deco_tilegen1->pf_update(m_pf1_rowscroll, m_pf2_rowscroll); - m_deco_tilegen2->pf_update(m_pf3_rowscroll, m_pf4_rowscroll); + m_deco_tilegen[0]->pf_update(m_pf_rowscroll[0], m_pf_rowscroll[1]); + m_deco_tilegen[1]->pf_update(m_pf_rowscroll[2], m_pf_rowscroll[3]); /* Draw playfields & sprites */ - m_deco_tilegen2->tilemap_2_draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); + m_deco_tilegen[1]->tilemap_2_draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0); m_sprgen->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0800, 0x0900, 0x100, 0x0ff); m_sprgen->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0900, 0x0900, 0x500, 0x0ff); if (m_pri) { - m_deco_tilegen1->tilemap_2_draw(screen, bitmap, cliprect, 0, 0); - m_deco_tilegen2->tilemap_1_draw(screen, bitmap, cliprect, 0, 0); + m_deco_tilegen[0]->tilemap_2_draw(screen, bitmap, cliprect, 0, 0); + m_deco_tilegen[1]->tilemap_1_draw(screen, bitmap, cliprect, 0, 0); } else { - m_deco_tilegen2->tilemap_1_draw(screen, bitmap, cliprect, 0, 0); - m_deco_tilegen1->tilemap_2_draw(screen, bitmap, cliprect, 0, 0); + m_deco_tilegen[1]->tilemap_1_draw(screen, bitmap, cliprect, 0, 0); + m_deco_tilegen[0]->tilemap_2_draw(screen, bitmap, cliprect, 0, 0); } m_sprgen->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0000, 0x0900, 0x100, 0x0ff); m_sprgen->inefficient_copy_sprite_bitmap(bitmap, cliprect, 0x0100, 0x0900, 0x500, 0x0ff); - m_deco_tilegen1->tilemap_1_draw(screen, bitmap, cliprect, 0, 0); + m_deco_tilegen[0]->tilemap_1_draw(screen, bitmap, cliprect, 0, 0); return 0; } -- cgit v1.2.3