From 361308b8dd9a159ccb9c72fe97a6fc7265bd41cc Mon Sep 17 00:00:00 2001 From: cam900 Date: Fri, 13 Jul 2018 00:50:06 +0900 Subject: [PATCH] bbusters.cpp Update/Cleanups (#3666) * bbusters.cpp Update/Cleanups bbusters.cpp : Split mechatt_state(difference at tilemap size, number of sprite layer, gun in/output, used register), Cleanup duplicates, Reduce runtime tag lookups, Move GFX byte-swap into ROM load * bbusters.cpp : Fix mechatt regression --- src/mame/drivers/bbusters.cpp | 398 ++++++++++++++++------------------ src/mame/includes/bbusters.h | 110 ++++++---- src/mame/video/bbusters.cpp | 87 +++----- 3 files changed, 282 insertions(+), 313 deletions(-) diff --git a/src/mame/drivers/bbusters.cpp b/src/mame/drivers/bbusters.cpp index 22972485c9d..59f94bcdb58 100644 --- a/src/mame/drivers/bbusters.cpp +++ b/src/mame/drivers/bbusters.cpp @@ -240,27 +240,15 @@ Country : void bbusters_state::machine_start() { - save_item(NAME(m_sound_status)); + m_gun_recoil.resolve(); + save_item(NAME(m_gun_select)); } -READ16_MEMBER(bbusters_state::sound_status_r) +WRITE8_MEMBER(bbusters_state::sound_cpu_w) { - return m_sound_status; -} - -WRITE8_MEMBER(bbusters_state::sound_status_w) -{ - m_sound_status = data; -} - -WRITE16_MEMBER(bbusters_state::sound_cpu_w) -{ - if (ACCESSING_BITS_0_7) - { - m_soundlatch->write(space, 0, data&0xff); - m_audiocpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero); - } + m_soundlatch[0]->write(space, 0, data&0xff); + m_audiocpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero); } /* Eprom is byte wide, top half of word _must_ be 0xff */ @@ -271,9 +259,7 @@ READ16_MEMBER(bbusters_state::eprom_r) READ16_MEMBER(bbusters_state::control_3_r) { - static const char *const port[] = { "GUNX1", "GUNY1", "GUNX2", "GUNY2", "GUNX3", "GUNY3" }; - - uint16_t retdata = ioport(port[m_gun_select])->read(); + uint16_t retdata = m_gun_io[m_gun_select]->read(); retdata >>=1; // by lowering the precision of the gun reading hardware the game seems to work better @@ -289,17 +275,10 @@ WRITE16_MEMBER(bbusters_state::gun_select_w) m_gun_select = data & 0xff; } -WRITE16_MEMBER(bbusters_state::two_gun_output_w) -{ - output().set_value("Player1_Gun_Recoil",(data & 0x01)); - output().set_value("Player2_Gun_Recoil",(data & 0x02)>>1); -} - WRITE16_MEMBER(bbusters_state::three_gun_output_w) { - output().set_value("Player1_Gun_Recoil",(data & 0x01)); - output().set_value("Player2_Gun_Recoil",(data & 0x02)>>1); - output().set_value("Player3_Gun_Recoil",(data & 0x04)>>2); + for (int i = 0; i < 3; i++) + m_gun_recoil[i] = BIT(data, i); } READ16_MEMBER(bbusters_state::kludge_r) @@ -308,19 +287,11 @@ READ16_MEMBER(bbusters_state::kludge_r) return 0x0000; } -READ16_MEMBER(bbusters_state::mechatt_gun_r) +template +WRITE16_MEMBER(bbusters_state::pf_w) { - int x, y; - - x = ioport(offset ? "GUNX2" : "GUNX1")->read(); - y = ioport(offset ? "GUNY2" : "GUNY1")->read(); - - /* Todo - does the hardware really clamp like this? */ - x += 0x18; - if (x > 0xff) x = 0xff; - if (y > 0xef) y = 0xef; - - return x | (y<<8); + COMBINE_DATA(&m_pf_data[Layer][offset]); + m_pf_tilemap[Layer]->mark_tile_dirty(offset); } /*******************************************************************************/ @@ -330,12 +301,12 @@ void bbusters_state::bbusters_map(address_map &map) map(0x000000, 0x07ffff).rom(); map(0x080000, 0x08ffff).ram().share("ram"); map(0x090000, 0x090fff).ram().w(FUNC(bbusters_state::video_w)).share("videoram"); - map(0x0a0000, 0x0a0fff).ram().share("spriteram"); + map(0x0a0000, 0x0a0fff).ram().share("spriteram1"); map(0x0a1000, 0x0a7fff).ram(); /* service mode */ map(0x0a8000, 0x0a8fff).ram().share("spriteram2"); map(0x0a9000, 0x0affff).ram(); /* service mode */ - map(0x0b0000, 0x0b1fff).ram().w(FUNC(bbusters_state::pf1_w)).share("pf1_data"); - map(0x0b2000, 0x0b3fff).ram().w(FUNC(bbusters_state::pf2_w)).share("pf2_data"); + map(0x0b0000, 0x0b1fff).ram().w(FUNC(bbusters_state::pf_w<0>)).share("pf1_data"); + map(0x0b2000, 0x0b3fff).ram().w(FUNC(bbusters_state::pf_w<1>)).share("pf2_data"); map(0x0b4000, 0x0b5fff).ram(); /* service mode */ map(0x0b8000, 0x0b8003).writeonly().share("pf1_scroll_data"); map(0x0b8008, 0x0b800b).writeonly().share("pf2_scroll_data"); @@ -345,35 +316,61 @@ void bbusters_state::bbusters_map(address_map &map) map(0x0e0004, 0x0e0005).portr("IN1"); /* Player 3 */ map(0x0e0008, 0x0e0009).portr("DSW1"); /* Dip 1 */ map(0x0e000a, 0x0e000b).portr("DSW2"); /* Dip 2 */ - map(0x0e0018, 0x0e0019).r(FUNC(bbusters_state::sound_status_r)); + map(0x0e0019, 0x0e0019).r(m_soundlatch[1], FUNC(generic_latch_8_device::read)); map(0x0e8000, 0x0e8001).rw(FUNC(bbusters_state::kludge_r), FUNC(bbusters_state::gun_select_w)); map(0x0e8002, 0x0e8003).r(FUNC(bbusters_state::control_3_r)); - /* AM_RANGE(0x0f0008, 0x0f0009) AM_WRITENOP */ + /* map(0x0f0008, 0x0f0009).nopw(); */ map(0x0f0008, 0x0f0009).w(FUNC(bbusters_state::three_gun_output_w)); - map(0x0f0018, 0x0f0019).w(FUNC(bbusters_state::sound_cpu_w)); + map(0x0f0019, 0x0f0019).w(FUNC(bbusters_state::sound_cpu_w)); map(0x0f8000, 0x0f80ff).r(FUNC(bbusters_state::eprom_r)).writeonly().share("eeprom"); /* Eeprom */ } /*******************************************************************************/ -void bbusters_state::mechatt_map(address_map &map) +void mechatt_state::machine_start() +{ + m_gun_recoil.resolve(); +} + +WRITE16_MEMBER(mechatt_state::two_gun_output_w) +{ + for (int i = 0; i < 2; i++) + m_gun_recoil[i] = BIT(data, i); +} + +READ16_MEMBER(mechatt_state::mechatt_gun_r) +{ + int x, y; + + x = m_gun_io[offset ? 2 : 0]->read(); + y = m_gun_io[offset ? 3 : 1]->read(); + + /* Todo - does the hardware really clamp like this? */ + x += 0x18; + if (x > 0xff) x = 0xff; + if (y > 0xef) y = 0xef; + + return x | (y<<8); +} + +void mechatt_state::mechatt_map(address_map &map) { map(0x000000, 0x06ffff).rom(); map(0x070000, 0x07ffff).ram().share("ram"); - map(0x090000, 0x090fff).ram().w(FUNC(bbusters_state::video_w)).share("videoram"); - map(0x0a0000, 0x0a0fff).ram().share("spriteram"); + map(0x090000, 0x090fff).ram().w(FUNC(mechatt_state::video_w)).share("videoram"); + map(0x0a0000, 0x0a0fff).ram().share("spriteram1"); map(0x0a1000, 0x0a7fff).nopw(); - map(0x0b0000, 0x0b3fff).ram().w(FUNC(bbusters_state::pf1_w)).share("pf1_data"); + map(0x0b0000, 0x0b3fff).ram().w(FUNC(mechatt_state::pf_w<0>)).share("pf1_data"); map(0x0b8000, 0x0b8003).writeonly().share("pf1_scroll_data"); - map(0x0c0000, 0x0c3fff).ram().w(FUNC(bbusters_state::pf2_w)).share("pf2_data"); + map(0x0c0000, 0x0c3fff).ram().w(FUNC(mechatt_state::pf_w<1>)).share("pf2_data"); map(0x0c8000, 0x0c8003).writeonly().share("pf2_scroll_data"); map(0x0d0000, 0x0d07ff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); map(0x0e0000, 0x0e0001).portr("IN0"); map(0x0e0002, 0x0e0003).portr("DSW1"); - map(0x0e0004, 0x0e0007).r(FUNC(bbusters_state::mechatt_gun_r)); - /* AM_RANGE(0x0e4002, 0x0e4003) AM_WRITENOP Gun force feedback? */ - map(0x0e4002, 0x0e4003).w(FUNC(bbusters_state::two_gun_output_w)); - map(0x0e8000, 0x0e8001).rw(FUNC(bbusters_state::sound_status_r), FUNC(bbusters_state::sound_cpu_w)); + map(0x0e0004, 0x0e0007).r(FUNC(mechatt_state::mechatt_gun_r)); + /* map(0x0e4002, 0x0e4003).nopw(); Gun force feedback? */ + map(0x0e4002, 0x0e4003).w(FUNC(mechatt_state::two_gun_output_w)); + map(0x0e8001, 0x0e8001).r(m_soundlatch[1], FUNC(generic_latch_8_device::read)).w(FUNC(mechatt_state::sound_cpu_w)); } /******************************************************************************/ @@ -382,7 +379,7 @@ void bbusters_state::sound_map(address_map &map) { map(0x0000, 0xefff).rom(); map(0xf000, 0xf7ff).ram(); - map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(FUNC(bbusters_state::sound_status_w)); + map(0xf800, 0xf800).r(m_soundlatch[0], FUNC(generic_latch_8_device::read)).w(m_soundlatch[1], FUNC(generic_latch_8_device::write)); } void bbusters_state::sound_portmap(address_map &map) @@ -392,7 +389,7 @@ void bbusters_state::sound_portmap(address_map &map) map(0xc0, 0xc1).nopw(); /* -> Main CPU */ } -void bbusters_state::sounda_portmap(address_map &map) +void mechatt_state::sounda_portmap(address_map &map) { map.global_mask(0xff); map(0x00, 0x03).rw("ymsnd", FUNC(ym2608_device::read), FUNC(ym2608_device::write)); @@ -595,9 +592,9 @@ static const gfx_layout charlayout = 8,8, RGN_FRAC(1,1), 4, - { 0, 1, 2, 3 }, - { 0,4,8,12,16,20,24,28 }, - { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 }, + { STEP4(0,1) }, + { STEP8(0,4) }, + { STEP8(0,4*8) }, 32*8 }; @@ -606,16 +603,12 @@ static const gfx_layout spritelayout = 16,16, RGN_FRAC(1,1), 4, - { 8, 12, 0, 4 }, + { STEP4(0,4) }, { - 0, 1, 2, 3, - 16,17,18,19, - - 0+32*8, 1+32*8, 2+32*8, 3+32*8, - 16+32*8,17+32*8,18+32*8,19+32*8, + STEP4(0,1), STEP4(4*4,1), + STEP4(4*4*2*8,1), STEP4(4*4+4*4*2*8,1) }, - { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32, - 16*32, 17*32, 18*32, 19*32, 20*32, 21*32, 22*32, 23*32 }, + { STEP8(0,4*4*2), STEP8(16*32,4*8) }, 128*8 }; @@ -624,13 +617,9 @@ static const gfx_layout tilelayout = 16,16, /* 16*16 sprites */ RGN_FRAC(1,1), 4, /* 4 bits per pixel */ - { 0, 1, 2, 3 }, - { 0, 4, 8, 12, 16, 20, 24, 28, - 0+64*8, 4+64*8, 8+64*8, 12+64*8, - 16+64*8,20+64*8,24+64*8,28+64*8, - }, - { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32, - 8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32 }, + { STEP4(0,1) }, + { STEP8(0,4), STEP8(4*8*16,4) }, + { STEP16(0,4*8) }, 128*8 }; @@ -645,9 +634,8 @@ GFXDECODE_END static GFXDECODE_START( gfx_mechatt ) GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 16 ) GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 256, 16 ) - GFXDECODE_ENTRY( "gfx3", 0, spritelayout, 512, 16 ) - GFXDECODE_ENTRY( "gfx4", 0, tilelayout, 512, 16 ) - GFXDECODE_ENTRY( "gfx5", 0, tilelayout, 768, 16 ) + GFXDECODE_ENTRY( "gfx3", 0, tilelayout, 512, 16 ) + GFXDECODE_ENTRY( "gfx4", 0, tilelayout, 768, 16 ) GFXDECODE_END @@ -671,25 +659,24 @@ MACHINE_CONFIG_START(bbusters_state::bbusters) screen.set_refresh_hz(60); screen.set_size(64*8, 32*8); screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); - screen.set_screen_update(FUNC(bbusters_state::screen_update_bbuster)); - screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising)); - screen.screen_vblank().append(m_spriteram2, FUNC(buffered_spriteram16_device::vblank_copy_rising)); + screen.set_screen_update(FUNC(bbusters_state::screen_update)); + screen.screen_vblank().set(m_spriteram[0], FUNC(buffered_spriteram16_device::vblank_copy_rising)); + screen.screen_vblank().append(m_spriteram[1], FUNC(buffered_spriteram16_device::vblank_copy_rising)); screen.set_palette("palette"); MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_bbusters) MCFG_PALETTE_ADD("palette", 2048) MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx) - MCFG_VIDEO_START_OVERRIDE(bbusters_state,bbuster) - - MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM16) + MCFG_DEVICE_ADD("spriteram1", BUFFERED_SPRITERAM16) MCFG_DEVICE_ADD("spriteram2", BUFFERED_SPRITERAM16) /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_GENERIC_LATCH_8_ADD("soundlatch1") + MCFG_GENERIC_LATCH_8_ADD("soundlatch2") MCFG_DEVICE_ADD("ymsnd", YM2610, 8000000) MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) @@ -699,39 +686,38 @@ MACHINE_CONFIG_START(bbusters_state::bbusters) MCFG_SOUND_ROUTE(2, "rspeaker", 1.0) MACHINE_CONFIG_END -MACHINE_CONFIG_START(bbusters_state::mechatt) +MACHINE_CONFIG_START(mechatt_state::mechatt) /* basic machine hardware */ MCFG_DEVICE_ADD("maincpu", M68000, 12000000) MCFG_DEVICE_PROGRAM_MAP(mechatt_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", bbusters_state, irq4_line_hold) + MCFG_DEVICE_VBLANK_INT_DRIVER("screen", mechatt_state, irq4_line_hold) MCFG_DEVICE_ADD("audiocpu", Z80,4000000) /* Accurate */ MCFG_DEVICE_PROGRAM_MAP(sound_map) MCFG_DEVICE_IO_MAP(sounda_portmap) /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(bbusters_state, screen_update_mechatt) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_size(64*8, 32*8); + screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(mechatt_state::screen_update)); + screen.screen_vblank().set(m_spriteram[0], FUNC(buffered_spriteram16_device::vblank_copy_rising)); + screen.set_palette("palette"); MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_mechatt) MCFG_PALETTE_ADD("palette", 1024) MCFG_PALETTE_FORMAT(RRRRGGGGBBBBxxxx) - MCFG_VIDEO_START_OVERRIDE(bbusters_state,mechatt) - - MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM16) + MCFG_DEVICE_ADD("spriteram1", BUFFERED_SPRITERAM16) /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - MCFG_GENERIC_LATCH_8_ADD("soundlatch") + MCFG_GENERIC_LATCH_8_ADD("soundlatch1") + MCFG_GENERIC_LATCH_8_ADD("soundlatch2") MCFG_DEVICE_ADD("ymsnd", YM2608, 8000000) MCFG_YM2608_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) @@ -757,16 +743,16 @@ ROM_START( bbusters ) ROM_LOAD( "bb-10.l9", 0x000000, 0x20000, CRC(490c0d9b) SHA1(567c25a6d96407259c64061d674305e4117d9fa4) ) ROM_REGION( 0x200000, "gfx2", 0 ) - ROM_LOAD( "bb-f11.m16", 0x000000, 0x80000, CRC(39fdf9c0) SHA1(80392947e3a1831c3ee80139f6f3bdc3bafa4f0d) ) - ROM_LOAD( "bb-f12.m13", 0x080000, 0x80000, CRC(69ee046b) SHA1(5c0435f1ce76b584fa8d154d7617d73c7ab5f62f) ) - ROM_LOAD( "bb-f13.m12", 0x100000, 0x80000, CRC(f5ef840e) SHA1(dd0f630c52076e0d330f47931e68a3ae9a401078) ) - ROM_LOAD( "bb-f14.m11", 0x180000, 0x80000, CRC(1a7df3bb) SHA1(1f27a528e6f89fe56a7342c4f1ff733da0a09327) ) + ROM_LOAD16_WORD_SWAP( "bb-f11.m16", 0x000000, 0x80000, CRC(39fdf9c0) SHA1(80392947e3a1831c3ee80139f6f3bdc3bafa4f0d) ) + ROM_LOAD16_WORD_SWAP( "bb-f12.m13", 0x080000, 0x80000, CRC(69ee046b) SHA1(5c0435f1ce76b584fa8d154d7617d73c7ab5f62f) ) + ROM_LOAD16_WORD_SWAP( "bb-f13.m12", 0x100000, 0x80000, CRC(f5ef840e) SHA1(dd0f630c52076e0d330f47931e68a3ae9a401078) ) + ROM_LOAD16_WORD_SWAP( "bb-f14.m11", 0x180000, 0x80000, CRC(1a7df3bb) SHA1(1f27a528e6f89fe56a7342c4f1ff733da0a09327) ) ROM_REGION( 0x200000, "gfx3", 0 ) - ROM_LOAD( "bb-f21.l10", 0x000000, 0x80000, CRC(530f595b) SHA1(820898693b878c4423de9c244f943d39ea69515e) ) - ROM_LOAD( "bb-f22.l12", 0x080000, 0x80000, CRC(889c562e) SHA1(d19172d6515ab9793c98de75d6e41687e61a408d) ) - ROM_LOAD( "bb-f23.l13", 0x100000, 0x80000, CRC(c89fe0da) SHA1(92be860a7191e7473c42aa2da981eda873219d3d) ) - ROM_LOAD( "bb-f24.l15", 0x180000, 0x80000, CRC(e0d81359) SHA1(2213c17651b6c023a456447f352b0739439f913a) ) + ROM_LOAD16_WORD_SWAP( "bb-f21.l10", 0x000000, 0x80000, CRC(530f595b) SHA1(820898693b878c4423de9c244f943d39ea69515e) ) + ROM_LOAD16_WORD_SWAP( "bb-f22.l12", 0x080000, 0x80000, CRC(889c562e) SHA1(d19172d6515ab9793c98de75d6e41687e61a408d) ) + ROM_LOAD16_WORD_SWAP( "bb-f23.l13", 0x100000, 0x80000, CRC(c89fe0da) SHA1(92be860a7191e7473c42aa2da981eda873219d3d) ) + ROM_LOAD16_WORD_SWAP( "bb-f24.l15", 0x180000, 0x80000, CRC(e0d81359) SHA1(2213c17651b6c023a456447f352b0739439f913a) ) ROM_REGION( 0x80000, "gfx4", 0 ) ROM_LOAD( "bb-back1.m4", 0x000000, 0x80000, CRC(b5445313) SHA1(3c99b557b2af30ff0fbc8a7dc6c40448c4f327db) ) @@ -774,7 +760,7 @@ ROM_START( bbusters ) ROM_REGION( 0x80000, "gfx5", 0 ) ROM_LOAD( "bb-back2.m6", 0x000000, 0x80000, CRC(8be996f6) SHA1(1e2c56f4c24793f806d7b366b92edc03145ae94c) ) - ROM_REGION( 0x10000, "user1", 0 ) /* Zoom table */ + ROM_REGION( 0x10000, "scale_table", 0 ) /* Zoom table */ /* same rom exists in 4 different locations on the board */ ROM_LOAD( "bb-6.e7", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) ) ROM_LOAD( "bb-7.h7", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) ) @@ -805,16 +791,16 @@ ROM_START( bbustersu ) ROM_LOAD( "bb-10.l9", 0x000000, 0x20000, CRC(490c0d9b) SHA1(567c25a6d96407259c64061d674305e4117d9fa4) ) ROM_REGION( 0x200000, "gfx2", 0 ) - ROM_LOAD( "bb-f11.m16", 0x000000, 0x80000, CRC(39fdf9c0) SHA1(80392947e3a1831c3ee80139f6f3bdc3bafa4f0d) ) - ROM_LOAD( "bb-f12.m13", 0x080000, 0x80000, CRC(69ee046b) SHA1(5c0435f1ce76b584fa8d154d7617d73c7ab5f62f) ) - ROM_LOAD( "bb-f13.m12", 0x100000, 0x80000, CRC(f5ef840e) SHA1(dd0f630c52076e0d330f47931e68a3ae9a401078) ) - ROM_LOAD( "bb-f14.m11", 0x180000, 0x80000, CRC(1a7df3bb) SHA1(1f27a528e6f89fe56a7342c4f1ff733da0a09327) ) + ROM_LOAD16_WORD_SWAP( "bb-f11.m16", 0x000000, 0x80000, CRC(39fdf9c0) SHA1(80392947e3a1831c3ee80139f6f3bdc3bafa4f0d) ) + ROM_LOAD16_WORD_SWAP( "bb-f12.m13", 0x080000, 0x80000, CRC(69ee046b) SHA1(5c0435f1ce76b584fa8d154d7617d73c7ab5f62f) ) + ROM_LOAD16_WORD_SWAP( "bb-f13.m12", 0x100000, 0x80000, CRC(f5ef840e) SHA1(dd0f630c52076e0d330f47931e68a3ae9a401078) ) + ROM_LOAD16_WORD_SWAP( "bb-f14.m11", 0x180000, 0x80000, CRC(1a7df3bb) SHA1(1f27a528e6f89fe56a7342c4f1ff733da0a09327) ) ROM_REGION( 0x200000, "gfx3", 0 ) - ROM_LOAD( "bb-f21.l10", 0x000000, 0x80000, CRC(530f595b) SHA1(820898693b878c4423de9c244f943d39ea69515e) ) - ROM_LOAD( "bb-f22.l12", 0x080000, 0x80000, CRC(889c562e) SHA1(d19172d6515ab9793c98de75d6e41687e61a408d) ) - ROM_LOAD( "bb-f23.l13", 0x100000, 0x80000, CRC(c89fe0da) SHA1(92be860a7191e7473c42aa2da981eda873219d3d) ) - ROM_LOAD( "bb-f24.l15", 0x180000, 0x80000, CRC(e0d81359) SHA1(2213c17651b6c023a456447f352b0739439f913a) ) + ROM_LOAD16_WORD_SWAP( "bb-f21.l10", 0x000000, 0x80000, CRC(530f595b) SHA1(820898693b878c4423de9c244f943d39ea69515e) ) + ROM_LOAD16_WORD_SWAP( "bb-f22.l12", 0x080000, 0x80000, CRC(889c562e) SHA1(d19172d6515ab9793c98de75d6e41687e61a408d) ) + ROM_LOAD16_WORD_SWAP( "bb-f23.l13", 0x100000, 0x80000, CRC(c89fe0da) SHA1(92be860a7191e7473c42aa2da981eda873219d3d) ) + ROM_LOAD16_WORD_SWAP( "bb-f24.l15", 0x180000, 0x80000, CRC(e0d81359) SHA1(2213c17651b6c023a456447f352b0739439f913a) ) ROM_REGION( 0x80000, "gfx4", 0 ) ROM_LOAD( "bb-back1.m4", 0x000000, 0x80000, CRC(b5445313) SHA1(3c99b557b2af30ff0fbc8a7dc6c40448c4f327db) ) @@ -822,7 +808,7 @@ ROM_START( bbustersu ) ROM_REGION( 0x80000, "gfx5", 0 ) ROM_LOAD( "bb-back2.m6", 0x000000, 0x80000, CRC(8be996f6) SHA1(1e2c56f4c24793f806d7b366b92edc03145ae94c) ) - ROM_REGION( 0x10000, "user1", 0 ) /* Zoom table */ + ROM_REGION( 0x10000, "scale_table", 0 ) /* Zoom table */ /* same rom exists in 4 different locations on the board */ ROM_LOAD( "bb-6.e7", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) ) ROM_LOAD( "bb-7.h7", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) ) @@ -853,16 +839,16 @@ ROM_START( bbustersua ) ROM_LOAD( "bb-10.l9", 0x000000, 0x20000, CRC(490c0d9b) SHA1(567c25a6d96407259c64061d674305e4117d9fa4) ) ROM_REGION( 0x200000, "gfx2", 0 ) - ROM_LOAD( "bb-f11.m16", 0x000000, 0x80000, CRC(39fdf9c0) SHA1(80392947e3a1831c3ee80139f6f3bdc3bafa4f0d) ) - ROM_LOAD( "bb-f12.m13", 0x080000, 0x80000, CRC(69ee046b) SHA1(5c0435f1ce76b584fa8d154d7617d73c7ab5f62f) ) - ROM_LOAD( "bb-f13.m12", 0x100000, 0x80000, CRC(f5ef840e) SHA1(dd0f630c52076e0d330f47931e68a3ae9a401078) ) - ROM_LOAD( "bb-f14.m11", 0x180000, 0x80000, CRC(1a7df3bb) SHA1(1f27a528e6f89fe56a7342c4f1ff733da0a09327) ) + ROM_LOAD16_WORD_SWAP( "bb-f11.m16", 0x000000, 0x80000, CRC(39fdf9c0) SHA1(80392947e3a1831c3ee80139f6f3bdc3bafa4f0d) ) + ROM_LOAD16_WORD_SWAP( "bb-f12.m13", 0x080000, 0x80000, CRC(69ee046b) SHA1(5c0435f1ce76b584fa8d154d7617d73c7ab5f62f) ) + ROM_LOAD16_WORD_SWAP( "bb-f13.m12", 0x100000, 0x80000, CRC(f5ef840e) SHA1(dd0f630c52076e0d330f47931e68a3ae9a401078) ) + ROM_LOAD16_WORD_SWAP( "bb-f14.m11", 0x180000, 0x80000, CRC(1a7df3bb) SHA1(1f27a528e6f89fe56a7342c4f1ff733da0a09327) ) ROM_REGION( 0x200000, "gfx3", 0 ) - ROM_LOAD( "bb-f21.l10", 0x000000, 0x80000, CRC(530f595b) SHA1(820898693b878c4423de9c244f943d39ea69515e) ) - ROM_LOAD( "bb-f22.l12", 0x080000, 0x80000, CRC(889c562e) SHA1(d19172d6515ab9793c98de75d6e41687e61a408d) ) - ROM_LOAD( "bb-f23.l13", 0x100000, 0x80000, CRC(c89fe0da) SHA1(92be860a7191e7473c42aa2da981eda873219d3d) ) - ROM_LOAD( "bb-f24.l15", 0x180000, 0x80000, CRC(e0d81359) SHA1(2213c17651b6c023a456447f352b0739439f913a) ) + ROM_LOAD16_WORD_SWAP( "bb-f21.l10", 0x000000, 0x80000, CRC(530f595b) SHA1(820898693b878c4423de9c244f943d39ea69515e) ) + ROM_LOAD16_WORD_SWAP( "bb-f22.l12", 0x080000, 0x80000, CRC(889c562e) SHA1(d19172d6515ab9793c98de75d6e41687e61a408d) ) + ROM_LOAD16_WORD_SWAP( "bb-f23.l13", 0x100000, 0x80000, CRC(c89fe0da) SHA1(92be860a7191e7473c42aa2da981eda873219d3d) ) + ROM_LOAD16_WORD_SWAP( "bb-f24.l15", 0x180000, 0x80000, CRC(e0d81359) SHA1(2213c17651b6c023a456447f352b0739439f913a) ) ROM_REGION( 0x80000, "gfx4", 0 ) ROM_LOAD( "bb-back1.m4", 0x000000, 0x80000, CRC(b5445313) SHA1(3c99b557b2af30ff0fbc8a7dc6c40448c4f327db) ) @@ -870,7 +856,7 @@ ROM_START( bbustersua ) ROM_REGION( 0x80000, "gfx5", 0 ) ROM_LOAD( "bb-back2.m6", 0x000000, 0x80000, CRC(8be996f6) SHA1(1e2c56f4c24793f806d7b366b92edc03145ae94c) ) - ROM_REGION( 0x10000, "user1", 0 ) /* Zoom table */ + ROM_REGION( 0x10000, "scale_table", 0 ) /* Zoom table */ /* same rom exists in 4 different locations on the board */ ROM_LOAD( "bb-6.e7", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) ) ROM_LOAD( "bb-7.h7", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) ) @@ -901,16 +887,16 @@ ROM_START( bbustersj ) ROM_LOAD( "bb-10.l9", 0x000000, 0x20000, CRC(490c0d9b) SHA1(567c25a6d96407259c64061d674305e4117d9fa4) ) ROM_REGION( 0x200000, "gfx2", 0 ) - ROM_LOAD( "bb-f11.m16", 0x000000, 0x80000, CRC(39fdf9c0) SHA1(80392947e3a1831c3ee80139f6f3bdc3bafa4f0d) ) - ROM_LOAD( "bb-f12.m13", 0x080000, 0x80000, CRC(69ee046b) SHA1(5c0435f1ce76b584fa8d154d7617d73c7ab5f62f) ) - ROM_LOAD( "bb-f13.m12", 0x100000, 0x80000, CRC(f5ef840e) SHA1(dd0f630c52076e0d330f47931e68a3ae9a401078) ) - ROM_LOAD( "bb-f14.m11", 0x180000, 0x80000, CRC(1a7df3bb) SHA1(1f27a528e6f89fe56a7342c4f1ff733da0a09327) ) + ROM_LOAD16_WORD_SWAP( "bb-f11.m16", 0x000000, 0x80000, CRC(39fdf9c0) SHA1(80392947e3a1831c3ee80139f6f3bdc3bafa4f0d) ) + ROM_LOAD16_WORD_SWAP( "bb-f12.m13", 0x080000, 0x80000, CRC(69ee046b) SHA1(5c0435f1ce76b584fa8d154d7617d73c7ab5f62f) ) + ROM_LOAD16_WORD_SWAP( "bb-f13.m12", 0x100000, 0x80000, CRC(f5ef840e) SHA1(dd0f630c52076e0d330f47931e68a3ae9a401078) ) + ROM_LOAD16_WORD_SWAP( "bb-f14.m11", 0x180000, 0x80000, CRC(1a7df3bb) SHA1(1f27a528e6f89fe56a7342c4f1ff733da0a09327) ) ROM_REGION( 0x200000, "gfx3", 0 ) - ROM_LOAD( "bb-f21.l10", 0x000000, 0x80000, CRC(530f595b) SHA1(820898693b878c4423de9c244f943d39ea69515e) ) - ROM_LOAD( "bb-f22.l12", 0x080000, 0x80000, CRC(889c562e) SHA1(d19172d6515ab9793c98de75d6e41687e61a408d) ) - ROM_LOAD( "bb-f23.l13", 0x100000, 0x80000, CRC(c89fe0da) SHA1(92be860a7191e7473c42aa2da981eda873219d3d) ) - ROM_LOAD( "bb-f24.l15", 0x180000, 0x80000, CRC(e0d81359) SHA1(2213c17651b6c023a456447f352b0739439f913a) ) + ROM_LOAD16_WORD_SWAP( "bb-f21.l10", 0x000000, 0x80000, CRC(530f595b) SHA1(820898693b878c4423de9c244f943d39ea69515e) ) + ROM_LOAD16_WORD_SWAP( "bb-f22.l12", 0x080000, 0x80000, CRC(889c562e) SHA1(d19172d6515ab9793c98de75d6e41687e61a408d) ) + ROM_LOAD16_WORD_SWAP( "bb-f23.l13", 0x100000, 0x80000, CRC(c89fe0da) SHA1(92be860a7191e7473c42aa2da981eda873219d3d) ) + ROM_LOAD16_WORD_SWAP( "bb-f24.l15", 0x180000, 0x80000, CRC(e0d81359) SHA1(2213c17651b6c023a456447f352b0739439f913a) ) ROM_REGION( 0x80000, "gfx4", 0 ) ROM_LOAD( "bb-back1.m4", 0x000000, 0x80000, CRC(b5445313) SHA1(3c99b557b2af30ff0fbc8a7dc6c40448c4f327db) ) @@ -918,7 +904,7 @@ ROM_START( bbustersj ) ROM_REGION( 0x80000, "gfx5", 0 ) ROM_LOAD( "bb-back2.m6", 0x000000, 0x80000, CRC(8be996f6) SHA1(1e2c56f4c24793f806d7b366b92edc03145ae94c) ) - ROM_REGION( 0x10000, "user1", 0 ) /* Zoom table */ + ROM_REGION( 0x10000, "scale_table", 0 ) /* Zoom table */ /* same rom exists in 4 different locations on the board */ ROM_LOAD( "bb-6.e7", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) ) ROM_LOAD( "bb-7.h7", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) ) @@ -949,16 +935,16 @@ ROM_START( bbustersja ) ROM_LOAD( "bb-10.l9", 0x000000, 0x20000, CRC(490c0d9b) SHA1(567c25a6d96407259c64061d674305e4117d9fa4) ) ROM_REGION( 0x200000, "gfx2", 0 ) - ROM_LOAD( "bb-f11.m16", 0x000000, 0x80000, CRC(39fdf9c0) SHA1(80392947e3a1831c3ee80139f6f3bdc3bafa4f0d) ) - ROM_LOAD( "bb-f12.m13", 0x080000, 0x80000, CRC(69ee046b) SHA1(5c0435f1ce76b584fa8d154d7617d73c7ab5f62f) ) - ROM_LOAD( "bb-f13.m12", 0x100000, 0x80000, CRC(f5ef840e) SHA1(dd0f630c52076e0d330f47931e68a3ae9a401078) ) - ROM_LOAD( "bb-f14.m11", 0x180000, 0x80000, CRC(1a7df3bb) SHA1(1f27a528e6f89fe56a7342c4f1ff733da0a09327) ) + ROM_LOAD16_WORD_SWAP( "bb-f11.m16", 0x000000, 0x80000, CRC(39fdf9c0) SHA1(80392947e3a1831c3ee80139f6f3bdc3bafa4f0d) ) + ROM_LOAD16_WORD_SWAP( "bb-f12.m13", 0x080000, 0x80000, CRC(69ee046b) SHA1(5c0435f1ce76b584fa8d154d7617d73c7ab5f62f) ) + ROM_LOAD16_WORD_SWAP( "bb-f13.m12", 0x100000, 0x80000, CRC(f5ef840e) SHA1(dd0f630c52076e0d330f47931e68a3ae9a401078) ) + ROM_LOAD16_WORD_SWAP( "bb-f14.m11", 0x180000, 0x80000, CRC(1a7df3bb) SHA1(1f27a528e6f89fe56a7342c4f1ff733da0a09327) ) ROM_REGION( 0x200000, "gfx3", 0 ) - ROM_LOAD( "bb-f21.l10", 0x000000, 0x80000, CRC(530f595b) SHA1(820898693b878c4423de9c244f943d39ea69515e) ) - ROM_LOAD( "bb-f22.l12", 0x080000, 0x80000, CRC(889c562e) SHA1(d19172d6515ab9793c98de75d6e41687e61a408d) ) - ROM_LOAD( "bb-f23.l13", 0x100000, 0x80000, CRC(c89fe0da) SHA1(92be860a7191e7473c42aa2da981eda873219d3d) ) - ROM_LOAD( "bb-f24.l15", 0x180000, 0x80000, CRC(e0d81359) SHA1(2213c17651b6c023a456447f352b0739439f913a) ) + ROM_LOAD16_WORD_SWAP( "bb-f21.l10", 0x000000, 0x80000, CRC(530f595b) SHA1(820898693b878c4423de9c244f943d39ea69515e) ) + ROM_LOAD16_WORD_SWAP( "bb-f22.l12", 0x080000, 0x80000, CRC(889c562e) SHA1(d19172d6515ab9793c98de75d6e41687e61a408d) ) + ROM_LOAD16_WORD_SWAP( "bb-f23.l13", 0x100000, 0x80000, CRC(c89fe0da) SHA1(92be860a7191e7473c42aa2da981eda873219d3d) ) + ROM_LOAD16_WORD_SWAP( "bb-f24.l15", 0x180000, 0x80000, CRC(e0d81359) SHA1(2213c17651b6c023a456447f352b0739439f913a) ) ROM_REGION( 0x80000, "gfx4", 0 ) ROM_LOAD( "bb-back1.m4", 0x000000, 0x80000, CRC(b5445313) SHA1(3c99b557b2af30ff0fbc8a7dc6c40448c4f327db) ) @@ -966,7 +952,7 @@ ROM_START( bbustersja ) ROM_REGION( 0x80000, "gfx5", 0 ) ROM_LOAD( "bb-back2.m6", 0x000000, 0x80000, CRC(8be996f6) SHA1(1e2c56f4c24793f806d7b366b92edc03145ae94c) ) - ROM_REGION( 0x10000, "user1", 0 ) /* Zoom table */ + ROM_REGION( 0x10000, "scale_table", 0 ) /* Zoom table */ /* same rom exists in 4 different locations on the board */ ROM_LOAD( "bb-6.e7", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) ) ROM_LOAD( "bb-7.h7", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) ) @@ -998,24 +984,21 @@ ROM_START( mechatt ) ROM_LOAD( "ma_1.l2", 0x000000, 0x10000, CRC(24766917) SHA1(9082a8ae849605ce65b5a0493ae69cfe282f7e7b) ) ROM_REGION( 0x200000, "gfx2", 0 ) // Located on the A8002-2 board - ROM_LOAD( "mao89p13.bin", 0x000000, 0x80000, CRC(8bcb16cf) SHA1(409ee1944188d9ce39adce29b1df029b560dd5b0) ) - ROM_LOAD( "ma189p15.bin", 0x080000, 0x80000, CRC(b84d9658) SHA1(448adecb0067d8f5b219ec2f94a8dec84187a554) ) - ROM_LOAD( "ma289p17.bin", 0x100000, 0x80000, CRC(6cbe08ac) SHA1(8f81f6e92b84ab6867452011d52f3e7689c62a1a) ) - ROM_LOAD( "ma389m15.bin", 0x180000, 0x80000, CRC(34d4585e) SHA1(38d9fd5d775e4b3c8b8b487a6ba9b8bdcb3274b0) ) + ROM_LOAD16_WORD_SWAP( "mao89p13.bin", 0x000000, 0x80000, CRC(8bcb16cf) SHA1(409ee1944188d9ce39adce29b1df029b560dd5b0) ) + ROM_LOAD16_WORD_SWAP( "ma189p15.bin", 0x080000, 0x80000, CRC(b84d9658) SHA1(448adecb0067d8f5b219ec2f94a8dec84187a554) ) + ROM_LOAD16_WORD_SWAP( "ma289p17.bin", 0x100000, 0x80000, CRC(6cbe08ac) SHA1(8f81f6e92b84ab6867452011d52f3e7689c62a1a) ) + ROM_LOAD16_WORD_SWAP( "ma389m15.bin", 0x180000, 0x80000, CRC(34d4585e) SHA1(38d9fd5d775e4b3c8b8b487a6ba9b8bdcb3274b0) ) - ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASEFF ) - /* Unused */ - - ROM_REGION( 0x80000, "gfx4", 0 ) // Located on the A8002-2 board + ROM_REGION( 0x80000, "gfx3", 0 ) // Located on the A8002-2 board ROM_LOAD( "mab189a2.bin", 0x000000, 0x80000, CRC(e1c8b4d0) SHA1(2f8a1839cca892f8380c7cffe7a12e615d38fd55) ) - ROM_REGION( 0x80000, "gfx5", 0 ) // Located on the A8002-2 board + ROM_REGION( 0x80000, "gfx4", 0 ) // Located on the A8002-2 board ROM_LOAD( "mab289c2.bin", 0x000000, 0x80000, CRC(14f97ceb) SHA1(a22033532ea616dc3a3db8b66ad6ccc6172ed7cc) ) ROM_REGION( 0x20000, "ymsnd", 0 ) // Located on the A8002-1 main board ROM_LOAD( "ma_2.d10", 0x000000, 0x20000, CRC(ea4cc30d) SHA1(d8f089fc0ce76309411706a8110ad907f93dc97e) ) - ROM_REGION( 0x20000, "user1", 0 ) // Zoom table - Located on the A8002-2 board + ROM_REGION( 0x20000, "scale_table", 0 ) // Zoom table - Located on the A8002-2 board ROM_LOAD( "ma_8.f10", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) ) ROM_LOAD( "ma_9.f12", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) ) // identical to ma_8.f10 ROM_END @@ -1034,33 +1017,30 @@ ROM_START( mechattj ) // Uses EPROMs on official SNK A8002-5 & A8002-6 sub board ROM_LOAD( "ma_1.l2", 0x000000, 0x10000, CRC(24766917) SHA1(9082a8ae849605ce65b5a0493ae69cfe282f7e7b) ) ROM_REGION( 0x200000, "gfx2", 0 ) // Located on the A8002-6 sub board - ROM_LOAD16_BYTE( "s_9.a1", 0x000000, 0x20000, CRC(6e8e194c) SHA1(02bbd573a322a3f7f8e92ccceebffdd598b5489e) ) // these 4 == mao89p13.bin - ROM_LOAD16_BYTE( "s_1.b1", 0x000001, 0x20000, CRC(fd9161ed) SHA1(b3e2434dd9cb1cafe1022774b863b5f1a008a9d2) ) - ROM_LOAD16_BYTE( "s_10.a2", 0x040000, 0x20000, CRC(fad6a1ab) SHA1(5347b4493c8004dc8cedc0b37aba494f203142b8) ) - ROM_LOAD16_BYTE( "s_2.b2", 0x040001, 0x20000, CRC(549056f0) SHA1(f515aa98ab25f3735dbfdefcb8d55ba3b2075b70) ) - ROM_LOAD16_BYTE( "s_11.a3", 0x080000, 0x20000, CRC(3887a382) SHA1(b40861fc1414b2fa299772e76a78cb8dc00b71b7) ) // these 4 == ma189p15.bin - ROM_LOAD16_BYTE( "s_3.b3", 0x080001, 0x20000, CRC(cb99f565) SHA1(9ed1b21f4a33b9a614bca38610378857560cdaba) ) - ROM_LOAD16_BYTE( "s_12.a4", 0x0c0000, 0x20000, CRC(63417b49) SHA1(786249fa7e8770de5b5882debdc2913d58e9170e) ) - ROM_LOAD16_BYTE( "s_4.b4", 0x0c0001, 0x20000, CRC(d739d48a) SHA1(04d2ecea72b6e651b815865946c9c9cfae4e5c4d) ) - ROM_LOAD16_BYTE( "s_13.a5", 0x100000, 0x20000, CRC(eccd47b6) SHA1(6b9c63fee97a7568114f227a89a1effd6b04806a) ) // these 4 == ma289p17.bin - ROM_LOAD16_BYTE( "s_5.b5", 0x100001, 0x20000, CRC(e15244da) SHA1(ebf3072565c53d0098d373b5093ba6918c4eddae) ) - ROM_LOAD16_BYTE( "s_14.a6", 0x140000, 0x20000, CRC(bbbf0461) SHA1(c5299ab1d45f685a5d160492247cf1303ef6937a) ) - ROM_LOAD16_BYTE( "s_6.b6", 0x140001, 0x20000, CRC(4ee89f75) SHA1(bda0e9095da2d424faac341fd934000a621796eb) ) - ROM_LOAD16_BYTE( "s_15.a7", 0x180000, 0x20000, CRC(cde29bad) SHA1(24c1b43c6d717eaaf7c01ec7de89837947334224) ) // these 4 == ma389m15.bin - ROM_LOAD16_BYTE( "s_7.b7", 0x180001, 0x20000, CRC(065ed221) SHA1(c03ca5b4d1198939a57b5fccf6a79d70afe1faaf) ) - ROM_LOAD16_BYTE( "s_16.a8", 0x1c0000, 0x20000, CRC(70f28040) SHA1(91012728953563fcc576725337e6ba7e1b49d1ba) ) - ROM_LOAD16_BYTE( "s_8.b8", 0x1c0001, 0x20000, CRC(a6f8574f) SHA1(87c041669b2eaec495ae10a6f45b6668accb92bf) ) + ROM_LOAD16_BYTE( "s_9.a1", 0x000001, 0x20000, CRC(6e8e194c) SHA1(02bbd573a322a3f7f8e92ccceebffdd598b5489e) ) // these 4 == mao89p13.bin + ROM_LOAD16_BYTE( "s_1.b1", 0x000000, 0x20000, CRC(fd9161ed) SHA1(b3e2434dd9cb1cafe1022774b863b5f1a008a9d2) ) + ROM_LOAD16_BYTE( "s_10.a2", 0x040001, 0x20000, CRC(fad6a1ab) SHA1(5347b4493c8004dc8cedc0b37aba494f203142b8) ) + ROM_LOAD16_BYTE( "s_2.b2", 0x040000, 0x20000, CRC(549056f0) SHA1(f515aa98ab25f3735dbfdefcb8d55ba3b2075b70) ) + ROM_LOAD16_BYTE( "s_11.a3", 0x080001, 0x20000, CRC(3887a382) SHA1(b40861fc1414b2fa299772e76a78cb8dc00b71b7) ) // these 4 == ma189p15.bin + ROM_LOAD16_BYTE( "s_3.b3", 0x080000, 0x20000, CRC(cb99f565) SHA1(9ed1b21f4a33b9a614bca38610378857560cdaba) ) + ROM_LOAD16_BYTE( "s_12.a4", 0x0c0001, 0x20000, CRC(63417b49) SHA1(786249fa7e8770de5b5882debdc2913d58e9170e) ) + ROM_LOAD16_BYTE( "s_4.b4", 0x0c0000, 0x20000, CRC(d739d48a) SHA1(04d2ecea72b6e651b815865946c9c9cfae4e5c4d) ) + ROM_LOAD16_BYTE( "s_13.a5", 0x100001, 0x20000, CRC(eccd47b6) SHA1(6b9c63fee97a7568114f227a89a1effd6b04806a) ) // these 4 == ma289p17.bin + ROM_LOAD16_BYTE( "s_5.b5", 0x100000, 0x20000, CRC(e15244da) SHA1(ebf3072565c53d0098d373b5093ba6918c4eddae) ) + ROM_LOAD16_BYTE( "s_14.a6", 0x140001, 0x20000, CRC(bbbf0461) SHA1(c5299ab1d45f685a5d160492247cf1303ef6937a) ) + ROM_LOAD16_BYTE( "s_6.b6", 0x140000, 0x20000, CRC(4ee89f75) SHA1(bda0e9095da2d424faac341fd934000a621796eb) ) + ROM_LOAD16_BYTE( "s_15.a7", 0x180001, 0x20000, CRC(cde29bad) SHA1(24c1b43c6d717eaaf7c01ec7de89837947334224) ) // these 4 == ma389m15.bin + ROM_LOAD16_BYTE( "s_7.b7", 0x180000, 0x20000, CRC(065ed221) SHA1(c03ca5b4d1198939a57b5fccf6a79d70afe1faaf) ) + ROM_LOAD16_BYTE( "s_16.a8", 0x1c0001, 0x20000, CRC(70f28040) SHA1(91012728953563fcc576725337e6ba7e1b49d1ba) ) + ROM_LOAD16_BYTE( "s_8.b8", 0x1c0000, 0x20000, CRC(a6f8574f) SHA1(87c041669b2eaec495ae10a6f45b6668accb92bf) ) - ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASEFF ) - /* Unused */ - - ROM_REGION( 0x80000, "gfx4", 0 ) // these 4 == mab189a2.bin - Located on the A8002-5 sub board + ROM_REGION( 0x80000, "gfx3", 0 ) // these 4 == mab189a2.bin - Located on the A8002-5 sub board ROM_LOAD( "s_21.b3", 0x000000, 0x20000, CRC(701a0072) SHA1(b03b6fa18e0cfcd5c7c541025fa2d3632d2f8387) ) ROM_LOAD( "s_22.b4", 0x020000, 0x20000, CRC(34e6225c) SHA1(f6335084f4f4c7a4b6528e6ad74962b88f81e3bc) ) ROM_LOAD( "s_23.b5", 0x040000, 0x20000, CRC(9a7399d3) SHA1(04e0327b0da75f621b51e1831cbdc4537082e32b) ) ROM_LOAD( "s_24.b6", 0x060000, 0x20000, CRC(f097459d) SHA1(466364677f048519eb2894ddecf76f5c52f6afe9) ) - ROM_REGION( 0x80000, "gfx5", 0 ) // these 4 == mab289c2.bin - Located on the A8002-5 sub board + ROM_REGION( 0x80000, "gfx4", 0 ) // these 4 == mab289c2.bin - Located on the A8002-5 sub board ROM_LOAD( "s_17.a3", 0x000000, 0x20000, CRC(cc47c4a3) SHA1(140f53b671b4eaed6fcc516c4018f07a6d7c2290) ) ROM_LOAD( "s_18.a4", 0x020000, 0x20000, CRC(a04377e8) SHA1(841c6c3073b137f6a5c875db32039186c014f785) ) ROM_LOAD( "s_19.a5", 0x040000, 0x20000, CRC(b07f5289) SHA1(8817bd225edf9b0fa439b220617f925365e39253) ) @@ -1069,7 +1049,7 @@ ROM_START( mechattj ) // Uses EPROMs on official SNK A8002-5 & A8002-6 sub board ROM_REGION( 0x20000, "ymsnd", 0 ) // Located on the A8002-1 main board ROM_LOAD( "ma_2.d10", 0x000000, 0x20000, CRC(ea4cc30d) SHA1(d8f089fc0ce76309411706a8110ad907f93dc97e) ) - ROM_REGION( 0x20000, "user1", 0 ) // Zoom table - Located on the A8002-2 board + ROM_REGION( 0x20000, "scale_table", 0 ) // Zoom table - Located on the A8002-2 board ROM_LOAD( "ma_8.f10", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) ) ROM_LOAD( "ma_9.f12", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) ) // identical to ma_8.f10 ROM_END @@ -1088,24 +1068,21 @@ ROM_START( mechattu ) ROM_LOAD( "ma_1.l2", 0x000000, 0x10000, CRC(24766917) SHA1(9082a8ae849605ce65b5a0493ae69cfe282f7e7b) ) ROM_REGION( 0x200000, "gfx2", 0 ) // Located on the A8002-2 board - ROM_LOAD( "mao89p13.bin", 0x000000, 0x80000, CRC(8bcb16cf) SHA1(409ee1944188d9ce39adce29b1df029b560dd5b0) ) - ROM_LOAD( "ma189p15.bin", 0x080000, 0x80000, CRC(b84d9658) SHA1(448adecb0067d8f5b219ec2f94a8dec84187a554) ) - ROM_LOAD( "ma289p17.bin", 0x100000, 0x80000, CRC(6cbe08ac) SHA1(8f81f6e92b84ab6867452011d52f3e7689c62a1a) ) - ROM_LOAD( "ma389m15.bin", 0x180000, 0x80000, CRC(34d4585e) SHA1(38d9fd5d775e4b3c8b8b487a6ba9b8bdcb3274b0) ) + ROM_LOAD16_WORD_SWAP( "mao89p13.bin", 0x000000, 0x80000, CRC(8bcb16cf) SHA1(409ee1944188d9ce39adce29b1df029b560dd5b0) ) + ROM_LOAD16_WORD_SWAP( "ma189p15.bin", 0x080000, 0x80000, CRC(b84d9658) SHA1(448adecb0067d8f5b219ec2f94a8dec84187a554) ) + ROM_LOAD16_WORD_SWAP( "ma289p17.bin", 0x100000, 0x80000, CRC(6cbe08ac) SHA1(8f81f6e92b84ab6867452011d52f3e7689c62a1a) ) + ROM_LOAD16_WORD_SWAP( "ma389m15.bin", 0x180000, 0x80000, CRC(34d4585e) SHA1(38d9fd5d775e4b3c8b8b487a6ba9b8bdcb3274b0) ) - ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASEFF ) - /* Unused */ - - ROM_REGION( 0x80000, "gfx4", 0 ) // Located on the A8002-2 board + ROM_REGION( 0x80000, "gfx3", 0 ) // Located on the A8002-2 board ROM_LOAD( "mab189a2.bin", 0x000000, 0x80000, CRC(e1c8b4d0) SHA1(2f8a1839cca892f8380c7cffe7a12e615d38fd55) ) - ROM_REGION( 0x80000, "gfx5", 0 ) // Located on the A8002-2 board + ROM_REGION( 0x80000, "gfx4", 0 ) // Located on the A8002-2 board ROM_LOAD( "mab289c2.bin", 0x000000, 0x80000, CRC(14f97ceb) SHA1(a22033532ea616dc3a3db8b66ad6ccc6172ed7cc) ) ROM_REGION( 0x20000, "ymsnd", 0 ) // Located on the A8002-1 main board ROM_LOAD( "ma_2.d10", 0x000000, 0x20000, CRC(ea4cc30d) SHA1(d8f089fc0ce76309411706a8110ad907f93dc97e) ) - ROM_REGION( 0x20000, "user1", 0 ) // Zoom table - Located on the A8002-2 board + ROM_REGION( 0x20000, "scale_table", 0 ) // Zoom table - Located on the A8002-2 board ROM_LOAD( "ma_8.f10", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) ) ROM_LOAD( "ma_9.f12", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) ) // identical to ma_8.f10 ROM_END @@ -1125,33 +1102,30 @@ ROM_START( mechattu1 ) // Uses EPROMs on official SNK A8002-5 & A8002-6 sub boar ROM_LOAD( "ma_1.l2", 0x000000, 0x10000, CRC(24766917) SHA1(9082a8ae849605ce65b5a0493ae69cfe282f7e7b) ) ROM_REGION( 0x200000, "gfx2", 0 ) // Located on the A8002-6 sub board - ROM_LOAD16_BYTE( "s_9.a1", 0x000000, 0x20000, CRC(6e8e194c) SHA1(02bbd573a322a3f7f8e92ccceebffdd598b5489e) ) // these 4 == mao89p13.bin - ROM_LOAD16_BYTE( "s_1.b1", 0x000001, 0x20000, CRC(fd9161ed) SHA1(b3e2434dd9cb1cafe1022774b863b5f1a008a9d2) ) - ROM_LOAD16_BYTE( "s_10.a2", 0x040000, 0x20000, CRC(fad6a1ab) SHA1(5347b4493c8004dc8cedc0b37aba494f203142b8) ) - ROM_LOAD16_BYTE( "s_2.b2", 0x040001, 0x20000, CRC(549056f0) SHA1(f515aa98ab25f3735dbfdefcb8d55ba3b2075b70) ) - ROM_LOAD16_BYTE( "s_11.a3", 0x080000, 0x20000, CRC(3887a382) SHA1(b40861fc1414b2fa299772e76a78cb8dc00b71b7) ) // these 4 == ma189p15.bin - ROM_LOAD16_BYTE( "s_3.b3", 0x080001, 0x20000, CRC(cb99f565) SHA1(9ed1b21f4a33b9a614bca38610378857560cdaba) ) - ROM_LOAD16_BYTE( "s_12.a4", 0x0c0000, 0x20000, CRC(63417b49) SHA1(786249fa7e8770de5b5882debdc2913d58e9170e) ) - ROM_LOAD16_BYTE( "s_4.b4", 0x0c0001, 0x20000, CRC(d739d48a) SHA1(04d2ecea72b6e651b815865946c9c9cfae4e5c4d) ) - ROM_LOAD16_BYTE( "s_13.a5", 0x100000, 0x20000, CRC(eccd47b6) SHA1(6b9c63fee97a7568114f227a89a1effd6b04806a) ) // these 4 == ma289p17.bin - ROM_LOAD16_BYTE( "s_5.b5", 0x100001, 0x20000, CRC(e15244da) SHA1(ebf3072565c53d0098d373b5093ba6918c4eddae) ) - ROM_LOAD16_BYTE( "s_14.a6", 0x140000, 0x20000, CRC(bbbf0461) SHA1(c5299ab1d45f685a5d160492247cf1303ef6937a) ) - ROM_LOAD16_BYTE( "s_6.b6", 0x140001, 0x20000, CRC(4ee89f75) SHA1(bda0e9095da2d424faac341fd934000a621796eb) ) - ROM_LOAD16_BYTE( "s_15.a7", 0x180000, 0x20000, CRC(cde29bad) SHA1(24c1b43c6d717eaaf7c01ec7de89837947334224) ) // these 4 == ma389m15.bin - ROM_LOAD16_BYTE( "s_7.b7", 0x180001, 0x20000, CRC(065ed221) SHA1(c03ca5b4d1198939a57b5fccf6a79d70afe1faaf) ) - ROM_LOAD16_BYTE( "s_16.a8", 0x1c0000, 0x20000, CRC(70f28040) SHA1(91012728953563fcc576725337e6ba7e1b49d1ba) ) - ROM_LOAD16_BYTE( "s_8.b8", 0x1c0001, 0x20000, CRC(a6f8574f) SHA1(87c041669b2eaec495ae10a6f45b6668accb92bf) ) + ROM_LOAD16_BYTE( "s_9.a1", 0x000001, 0x20000, CRC(6e8e194c) SHA1(02bbd573a322a3f7f8e92ccceebffdd598b5489e) ) // these 4 == mao89p13.bin + ROM_LOAD16_BYTE( "s_1.b1", 0x000000, 0x20000, CRC(fd9161ed) SHA1(b3e2434dd9cb1cafe1022774b863b5f1a008a9d2) ) + ROM_LOAD16_BYTE( "s_10.a2", 0x040001, 0x20000, CRC(fad6a1ab) SHA1(5347b4493c8004dc8cedc0b37aba494f203142b8) ) + ROM_LOAD16_BYTE( "s_2.b2", 0x040000, 0x20000, CRC(549056f0) SHA1(f515aa98ab25f3735dbfdefcb8d55ba3b2075b70) ) + ROM_LOAD16_BYTE( "s_11.a3", 0x080001, 0x20000, CRC(3887a382) SHA1(b40861fc1414b2fa299772e76a78cb8dc00b71b7) ) // these 4 == ma189p15.bin + ROM_LOAD16_BYTE( "s_3.b3", 0x080000, 0x20000, CRC(cb99f565) SHA1(9ed1b21f4a33b9a614bca38610378857560cdaba) ) + ROM_LOAD16_BYTE( "s_12.a4", 0x0c0001, 0x20000, CRC(63417b49) SHA1(786249fa7e8770de5b5882debdc2913d58e9170e) ) + ROM_LOAD16_BYTE( "s_4.b4", 0x0c0000, 0x20000, CRC(d739d48a) SHA1(04d2ecea72b6e651b815865946c9c9cfae4e5c4d) ) + ROM_LOAD16_BYTE( "s_13.a5", 0x100001, 0x20000, CRC(eccd47b6) SHA1(6b9c63fee97a7568114f227a89a1effd6b04806a) ) // these 4 == ma289p17.bin + ROM_LOAD16_BYTE( "s_5.b5", 0x100000, 0x20000, CRC(e15244da) SHA1(ebf3072565c53d0098d373b5093ba6918c4eddae) ) + ROM_LOAD16_BYTE( "s_14.a6", 0x140001, 0x20000, CRC(bbbf0461) SHA1(c5299ab1d45f685a5d160492247cf1303ef6937a) ) + ROM_LOAD16_BYTE( "s_6.b6", 0x140000, 0x20000, CRC(4ee89f75) SHA1(bda0e9095da2d424faac341fd934000a621796eb) ) + ROM_LOAD16_BYTE( "s_15.a7", 0x180001, 0x20000, CRC(cde29bad) SHA1(24c1b43c6d717eaaf7c01ec7de89837947334224) ) // these 4 == ma389m15.bin + ROM_LOAD16_BYTE( "s_7.b7", 0x180000, 0x20000, CRC(065ed221) SHA1(c03ca5b4d1198939a57b5fccf6a79d70afe1faaf) ) + ROM_LOAD16_BYTE( "s_16.a8", 0x1c0001, 0x20000, CRC(70f28040) SHA1(91012728953563fcc576725337e6ba7e1b49d1ba) ) + ROM_LOAD16_BYTE( "s_8.b8", 0x1c0000, 0x20000, CRC(a6f8574f) SHA1(87c041669b2eaec495ae10a6f45b6668accb92bf) ) - ROM_REGION( 0x10000, "gfx3", ROMREGION_ERASEFF ) - /* Unused */ - - ROM_REGION( 0x80000, "gfx4", 0 ) // these 4 == mab189a2.bin - Located on the A8002-5 sub board + ROM_REGION( 0x80000, "gfx3", 0 ) // these 4 == mab189a2.bin - Located on the A8002-5 sub board ROM_LOAD( "s_21.b3", 0x000000, 0x20000, CRC(701a0072) SHA1(b03b6fa18e0cfcd5c7c541025fa2d3632d2f8387) ) ROM_LOAD( "s_22.b4", 0x020000, 0x20000, CRC(34e6225c) SHA1(f6335084f4f4c7a4b6528e6ad74962b88f81e3bc) ) ROM_LOAD( "s_23.b5", 0x040000, 0x20000, CRC(9a7399d3) SHA1(04e0327b0da75f621b51e1831cbdc4537082e32b) ) ROM_LOAD( "s_24.b6", 0x060000, 0x20000, CRC(f097459d) SHA1(466364677f048519eb2894ddecf76f5c52f6afe9) ) - ROM_REGION( 0x80000, "gfx5", 0 ) // these 4 == mab289c2.bin - Located on the A8002-5 sub board + ROM_REGION( 0x80000, "gfx4", 0 ) // these 4 == mab289c2.bin - Located on the A8002-5 sub board ROM_LOAD( "s_17.a3", 0x000000, 0x20000, CRC(cc47c4a3) SHA1(140f53b671b4eaed6fcc516c4018f07a6d7c2290) ) ROM_LOAD( "s_18.a4", 0x020000, 0x20000, CRC(a04377e8) SHA1(841c6c3073b137f6a5c875db32039186c014f785) ) ROM_LOAD( "s_19.a5", 0x040000, 0x20000, CRC(b07f5289) SHA1(8817bd225edf9b0fa439b220617f925365e39253) ) @@ -1160,7 +1134,7 @@ ROM_START( mechattu1 ) // Uses EPROMs on official SNK A8002-5 & A8002-6 sub boar ROM_REGION( 0x20000, "ymsnd", 0 ) // Located on the A8002-1 main board ROM_LOAD( "ma_2.d10", 0x000000, 0x20000, CRC(ea4cc30d) SHA1(d8f089fc0ce76309411706a8110ad907f93dc97e) ) - ROM_REGION( 0x20000, "user1", 0 ) // Zoom table - Located on the A8002-2 board + ROM_REGION( 0x20000, "scale_table", 0 ) // Zoom table - Located on the A8002-2 board ROM_LOAD( "ma_8.f10", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) ) ROM_LOAD( "ma_9.f12", 0x000000, 0x10000, CRC(61f3de03) SHA1(736f9634fe054ea68a2aa90a743bd0dc320f23c9) ) // identical to ma_8.f10 ROM_END @@ -1175,7 +1149,7 @@ GAME( 1989, bbustersua, bbusters, bbusters, bbusters, bbusters_state, empty_init GAME( 1989, bbustersj, bbusters, bbusters, bbusters, bbusters_state, empty_init, ROT0, "SNK", "Beast Busters (Japan, Version 2, 3 Player)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1989, bbustersja, bbusters, bbusters, bbusters, bbusters_state, empty_init, ROT0, "SNK", "Beast Busters (Japan, Version 2, 2 Player)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1989, mechatt, 0, mechatt, mechatt, bbusters_state, empty_init, ROT0, "SNK", "Mechanized Attack (World)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, mechattj, mechatt, mechatt, mechattj, bbusters_state, empty_init, ROT0, "SNK", "Mechanized Attack (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, mechattu, mechatt, mechatt, mechattu, bbusters_state, empty_init, ROT0, "SNK", "Mechanized Attack (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1989, mechattu1, mechatt, mechatt, mechattu, bbusters_state, empty_init, ROT0, "SNK", "Mechanized Attack (US, Version 1, Single Player)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, mechatt, 0, mechatt, mechatt, mechatt_state, empty_init, ROT0, "SNK", "Mechanized Attack (World)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, mechattj, mechatt, mechatt, mechattj, mechatt_state, empty_init, ROT0, "SNK", "Mechanized Attack (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, mechattu, mechatt, mechatt, mechattu, mechatt_state, empty_init, ROT0, "SNK", "Mechanized Attack (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, mechattu1, mechatt, mechatt, mechattu, mechatt_state, empty_init, ROT0, "SNK", "Mechanized Attack (US, Version 1, Single Player)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/includes/bbusters.h b/src/mame/includes/bbusters.h index fe35358d47c..955182ccee6 100644 --- a/src/mame/includes/bbusters.h +++ b/src/mame/includes/bbusters.h @@ -16,74 +16,88 @@ public: m_maincpu(*this, "maincpu"), m_audiocpu(*this, "audiocpu"), m_gfxdecode(*this, "gfxdecode"), - m_spriteram(*this, "spriteram"), - m_spriteram2(*this, "spriteram2"), - m_soundlatch(*this, "soundlatch"), - m_eprom_data(*this, "eeprom"), - m_ram(*this, "ram"), + m_spriteram(*this, "spriteram%u", 1U), + m_soundlatch(*this, "soundlatch%u", 1U), m_videoram(*this, "videoram"), - m_pf1_data(*this, "pf1_data"), - m_pf2_data(*this, "pf2_data"), - m_pf1_scroll_data(*this, "pf1_scroll_data"), - m_pf2_scroll_data(*this, "pf2_scroll_data") + m_pf_data(*this, "pf%u_data", 1U), + m_pf_scroll_data(*this, "pf%u_scroll_data", 1U), + m_scale_table(*this, "scale_table"), + m_gun_io(*this, { "GUNX1", "GUNY1", "GUNX2", "GUNY2", "GUNX3", "GUNY3" }), + m_gun_recoil(*this, "Player%u_Gun_Recoil", 1U), + m_eprom_data(*this, "eeprom") { } + TILE_GET_INFO_MEMBER(get_tile_info); + + void bbusters(machine_config &config); +protected: required_device m_maincpu; required_device m_audiocpu; required_device m_gfxdecode; - required_device m_spriteram; - optional_device m_spriteram2; - required_device m_soundlatch; + optional_device_array m_spriteram; + required_device_array m_soundlatch; - optional_shared_ptr m_eprom_data; - required_shared_ptr m_ram; required_shared_ptr m_videoram; - required_shared_ptr m_pf1_data; - required_shared_ptr m_pf2_data; - required_shared_ptr m_pf1_scroll_data; - required_shared_ptr m_pf2_scroll_data; + required_shared_ptr_array m_pf_data; + required_shared_ptr_array m_pf_scroll_data; + + required_region_ptr m_scale_table; + + optional_ioport_array<6> m_gun_io; + output_finder<3> m_gun_recoil; - int m_sound_status; - int m_gun_select; tilemap_t *m_fix_tilemap; - tilemap_t *m_pf1_tilemap; - tilemap_t *m_pf2_tilemap; + tilemap_t *m_pf_tilemap[2]; const uint8_t *m_scale_table_ptr; uint8_t m_scale_line_count; - DECLARE_READ16_MEMBER(sound_status_r); - DECLARE_WRITE8_MEMBER(sound_status_w); - DECLARE_WRITE16_MEMBER(sound_cpu_w); - DECLARE_READ16_MEMBER(eprom_r); - DECLARE_READ16_MEMBER(control_3_r); - DECLARE_WRITE16_MEMBER(gun_select_w); - DECLARE_WRITE16_MEMBER(two_gun_output_w); - DECLARE_WRITE16_MEMBER(three_gun_output_w); - DECLARE_READ16_MEMBER(kludge_r); - DECLARE_READ16_MEMBER(mechatt_gun_r); + template TILE_GET_INFO_MEMBER(get_pf_tile_info); + + DECLARE_WRITE8_MEMBER(sound_cpu_w); DECLARE_WRITE16_MEMBER(video_w); - DECLARE_WRITE16_MEMBER(pf1_w); - DECLARE_WRITE16_MEMBER(pf2_w); + template DECLARE_WRITE16_MEMBER(pf_w); - TILE_GET_INFO_MEMBER(get_tile_info); - TILE_GET_INFO_MEMBER(get_pf1_tile_info); - TILE_GET_INFO_MEMBER(get_pf2_tile_info); - - virtual void machine_start() override; - DECLARE_VIDEO_START(bbuster); - DECLARE_VIDEO_START(mechatt); - - uint32_t screen_update_bbuster(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint32_t screen_update_mechatt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); inline const uint8_t *get_source_ptr(gfx_element *gfx, uint32_t sprite, int dx, int dy, int block); void draw_block(bitmap_ind16 &dest,int x,int y,int size,int flipx,int flipy,uint32_t sprite,int color,int bank,int block); void draw_sprites(bitmap_ind16 &bitmap, const uint16_t *source, int bank, int colval, int colmask); - void bbusters(machine_config &config); - void mechatt(machine_config &config); - void bbusters_map(address_map &map); - void mechatt_map(address_map &map); + void sound_map(address_map &map); +private: + optional_shared_ptr m_eprom_data; + + DECLARE_READ16_MEMBER(eprom_r); + DECLARE_READ16_MEMBER(control_3_r); + DECLARE_WRITE16_MEMBER(gun_select_w); + DECLARE_WRITE16_MEMBER(three_gun_output_w); + DECLARE_READ16_MEMBER(kludge_r); + + int m_gun_select; + + virtual void machine_start() override; + virtual void video_start() override; + + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + void bbusters_map(address_map &map); void sound_portmap(address_map &map); +}; + +class mechatt_state : public bbusters_state +{ +public: + mechatt_state(const machine_config &mconfig, device_type type, const char *tag) : + bbusters_state(mconfig, type, tag) + { } + + void mechatt(machine_config &config); +private: + DECLARE_WRITE16_MEMBER(two_gun_output_w); + DECLARE_READ16_MEMBER(mechatt_gun_r); + + virtual void machine_start() override; + virtual void video_start() override; + + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + void mechatt_map(address_map &map); void sounda_portmap(address_map &map); }; diff --git a/src/mame/video/bbusters.cpp b/src/mame/video/bbusters.cpp index 19092dfd82d..df7de4eb704 100644 --- a/src/mame/video/bbusters.cpp +++ b/src/mame/video/bbusters.cpp @@ -36,18 +36,12 @@ TILE_GET_INFO_MEMBER(bbusters_state::get_tile_info) SET_TILE_INFO_MEMBER(0,tile&0xfff,tile>>12,0); } -TILE_GET_INFO_MEMBER(bbusters_state::get_pf1_tile_info) +template +TILE_GET_INFO_MEMBER(bbusters_state::get_pf_tile_info) { - uint16_t tile = m_pf1_data[tile_index]; + uint16_t tile = m_pf_data[Layer][tile_index]; - SET_TILE_INFO_MEMBER(3,tile&0xfff,tile>>12,0); -} - -TILE_GET_INFO_MEMBER(bbusters_state::get_pf2_tile_info) -{ - uint16_t tile = m_pf2_data[tile_index]; - - SET_TILE_INFO_MEMBER(4,tile&0xfff,tile>>12,0); + SET_TILE_INFO_MEMBER(Gfx,tile&0xfff,tile>>12,0); } WRITE16_MEMBER(bbusters_state::video_w) @@ -56,39 +50,27 @@ WRITE16_MEMBER(bbusters_state::video_w) m_fix_tilemap->mark_tile_dirty(offset); } -WRITE16_MEMBER(bbusters_state::pf1_w) -{ - COMBINE_DATA(&m_pf1_data[offset]); - m_pf1_tilemap->mark_tile_dirty(offset); -} - -WRITE16_MEMBER(bbusters_state::pf2_w) -{ - COMBINE_DATA(&m_pf2_data[offset]); - m_pf2_tilemap->mark_tile_dirty(offset); -} - /******************************************************************************/ -VIDEO_START_MEMBER(bbusters_state,bbuster) +void bbusters_state::video_start() { m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bbusters_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_pf1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bbusters_state::get_pf1_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 32); - m_pf2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bbusters_state::get_pf2_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 32); + m_pf_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&bbusters_state::get_pf_tile_info<0,3>, "layer0_gfx3", this), TILEMAP_SCAN_COLS, 16, 16, 128, 32); + m_pf_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&bbusters_state::get_pf_tile_info<1,4>, "layer1_gfx4", this), TILEMAP_SCAN_COLS, 16, 16, 128, 32); - m_pf1_tilemap->set_transparent_pen(15); + m_pf_tilemap[0]->set_transparent_pen(15); m_fix_tilemap->set_transparent_pen(15); save_item(NAME(m_scale_line_count)); } -VIDEO_START_MEMBER(bbusters_state,mechatt) +void mechatt_state::video_start() { m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bbusters_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_pf1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bbusters_state::get_pf1_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 256, 32); - m_pf2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bbusters_state::get_pf2_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 256, 32); + m_pf_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&bbusters_state::get_pf_tile_info<0,2>, "layer0_gfx2", this), TILEMAP_SCAN_COLS, 16, 16, 256, 32); + m_pf_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&bbusters_state::get_pf_tile_info<1,3>, "layer1_gfx3", this), TILEMAP_SCAN_COLS, 16, 16, 256, 32); - m_pf1_tilemap->set_transparent_pen(15); + m_pf_tilemap[0]->set_transparent_pen(15); m_fix_tilemap->set_transparent_pen(15); save_item(NAME(m_scale_line_count)); @@ -196,7 +178,6 @@ void bbusters_state::draw_block(bitmap_ind16 &dest,int x,int y,int size,int flip void bbusters_state::draw_sprites(bitmap_ind16 &bitmap, const uint16_t *source, int bank, int colval, int colmask) { - const uint8_t *scale_table=memregion("user1")->base(); int offs; for (offs = 0;offs <0x800 ;offs += 4) { @@ -243,25 +224,25 @@ void bbusters_state::draw_sprites(bitmap_ind16 &bitmap, const uint16_t *source, switch ((source[offs+0]>>8)&0x3) { case 0: scale=source[offs+0]&0x7; - m_scale_table_ptr = scale_table+0x387f+(0x80*scale); + m_scale_table_ptr = m_scale_table+0x387f+(0x80*scale); m_scale_line_count = 0x10-scale; draw_block(bitmap,x,y,16,fx,fy,sprite,colour,bank,block); break; case 1: /* 2 x 2 */ scale=source[offs+0]&0xf; - m_scale_table_ptr = scale_table+0x707f+(0x80*scale); + m_scale_table_ptr = m_scale_table+0x707f+(0x80*scale); m_scale_line_count = 0x20-scale; draw_block(bitmap,x,y,32,fx,fy,sprite,colour,bank,block); break; case 2: /* 64 by 64 block (2 x 2) x 2 */ scale=source[offs+0]&0x1f; - m_scale_table_ptr = scale_table+0xa07f+(0x80*scale); + m_scale_table_ptr = m_scale_table+0xa07f+(0x80*scale); m_scale_line_count = 0x40-scale; draw_block(bitmap,x,y,64,fx,fy,sprite,colour,bank,block); break; case 3: /* 2 x 2 x 2 x 2 */ scale=source[offs+0]&0x3f; - m_scale_table_ptr = scale_table+0xc07f+(0x80*scale); + m_scale_table_ptr = m_scale_table+0xc07f+(0x80*scale); m_scale_line_count = 0x80-scale; draw_block(bitmap,x,y,128,fx,fy,sprite,colour,bank,block); break; @@ -271,32 +252,32 @@ void bbusters_state::draw_sprites(bitmap_ind16 &bitmap, const uint16_t *source, /******************************************************************************/ -uint32_t bbusters_state::screen_update_bbuster(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t bbusters_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - m_pf1_tilemap->set_scrollx(0, m_pf1_scroll_data[0]); - m_pf1_tilemap->set_scrolly(0, m_pf1_scroll_data[1]); - m_pf2_tilemap->set_scrollx(0, m_pf2_scroll_data[0]); - m_pf2_tilemap->set_scrolly(0, m_pf2_scroll_data[1]); + m_pf_tilemap[0]->set_scrollx(0, m_pf_scroll_data[0][0]); + m_pf_tilemap[0]->set_scrolly(0, m_pf_scroll_data[0][1]); + m_pf_tilemap[1]->set_scrollx(0, m_pf_scroll_data[1][0]); + m_pf_tilemap[1]->set_scrolly(0, m_pf_scroll_data[1][1]); - m_pf2_tilemap->draw(screen, bitmap, cliprect, 0, 0); - //draw_sprites(machine(), bitmap, m_spriteram2->buffer(), 2, 0x8, 0x8); - m_pf1_tilemap->draw(screen, bitmap, cliprect, 0, 0); - draw_sprites(bitmap, m_spriteram2->buffer(), 2, 0, 0); - draw_sprites(bitmap, m_spriteram->buffer(), 1, 0, 0); + m_pf_tilemap[1]->draw(screen, bitmap, cliprect, 0, 0); + //draw_sprites(bitmap, m_spriteram[1]->buffer(), 2, 0x8, 0x8); + m_pf_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0); + draw_sprites(bitmap, m_spriteram[1]->buffer(), 2, 0, 0); + draw_sprites(bitmap, m_spriteram[0]->buffer(), 1, 0, 0); m_fix_tilemap->draw(screen, bitmap, cliprect, 0, 0); return 0; } -uint32_t bbusters_state::screen_update_mechatt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t mechatt_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - m_pf1_tilemap->set_scrollx(0, m_pf1_scroll_data[0]); - m_pf1_tilemap->set_scrolly(0, m_pf1_scroll_data[1]); - m_pf2_tilemap->set_scrollx(0, m_pf2_scroll_data[0]); - m_pf2_tilemap->set_scrolly(0, m_pf2_scroll_data[1]); + m_pf_tilemap[0]->set_scrollx(0, m_pf_scroll_data[0][0]); + m_pf_tilemap[0]->set_scrolly(0, m_pf_scroll_data[0][1]); + m_pf_tilemap[1]->set_scrollx(0, m_pf_scroll_data[1][0]); + m_pf_tilemap[1]->set_scrolly(0, m_pf_scroll_data[1][1]); - m_pf2_tilemap->draw(screen, bitmap, cliprect, 0, 0); - m_pf1_tilemap->draw(screen, bitmap, cliprect, 0, 0); - draw_sprites(bitmap, m_spriteram->buffer(), 1, 0, 0); + m_pf_tilemap[1]->draw(screen, bitmap, cliprect, 0, 0); + m_pf_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0); + draw_sprites(bitmap, m_spriteram[0]->buffer(), 1, 0, 0); m_fix_tilemap->draw(screen, bitmap, cliprect, 0, 0); return 0; }