From bbeb8de3bb4514f67bef5b07dd356edf6c91d428 Mon Sep 17 00:00:00 2001 From: andrew-gardner Date: Mon, 2 Mar 2015 16:22:34 +0100 Subject: [PATCH] A few more set_base removals (nw) --- src/mame/drivers/srmp6.c | 15 ++++++++++----- src/mame/drivers/srumbler.c | 24 ++++++++++++++---------- src/mame/drivers/suna16.c | 31 ++++++++++++++++++++++--------- src/mame/includes/suna16.h | 2 ++ 4 files changed, 48 insertions(+), 24 deletions(-) diff --git a/src/mame/drivers/srmp6.c b/src/mame/drivers/srmp6.c index 73ce04b7aad..e3c5c3860f5 100644 --- a/src/mame/drivers/srmp6.c +++ b/src/mame/drivers/srmp6.c @@ -107,6 +107,7 @@ public: DECLARE_WRITE16_MEMBER(paletteram_w); DECLARE_READ16_MEMBER(srmp6_irq_ack_r); DECLARE_DRIVER_INIT(INIT); + virtual void machine_start(); virtual void video_start(); UINT32 screen_update_srmp6(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); void update_palette(); @@ -306,6 +307,11 @@ UINT32 srmp6_state::screen_update_srmp6(screen_device &screen, bitmap_rgb32 &bit Main CPU memory handlers ***************************************************************************/ +void srmp6_state::machine_start() +{ + membank("bank1")->configure_entries(0, 16, memregion("nile")->base(), 0x200000); +} + WRITE16_MEMBER(srmp6_state::srmp6_input_select_w) { m_input_select = data & 0x0f; @@ -313,7 +319,7 @@ WRITE16_MEMBER(srmp6_state::srmp6_input_select_w) READ16_MEMBER(srmp6_state::srmp6_inputs_r) { - if (offset == 0) // DSW + if (offset == 0) // DSW return ioport("DSW")->read(); switch (m_input_select) // inputs @@ -334,9 +340,8 @@ WRITE16_MEMBER(srmp6_state::video_regs_w) { case 0x5e/2: // bank switch, used by ROM check { - const UINT8 *rom = memregion("nile")->base(); - LOG(("%x\n",data)); - membank("bank1")->set_base((UINT16 *)(rom + (data & 0x0f)*0x200000)); + LOG(("%x\n",data)); + membank("bank1")->set_entry(data & 0x0f); break; } @@ -544,7 +549,7 @@ READ16_MEMBER(srmp6_state::srmp6_irq_ack_r) static ADDRESS_MAP_START( srmp6_map, AS_PROGRAM, 16, srmp6_state ) AM_RANGE(0x000000, 0x0fffff) AM_ROM AM_RANGE(0x200000, 0x23ffff) AM_RAM // work RAM - AM_RANGE(0x600000, 0x7fffff) AM_ROMBANK("bank1") // banked ROM (used by ROM check) + AM_RANGE(0x600000, 0x7fffff) AM_ROMBANK("bank1") // banked ROM (used by ROM check) AM_RANGE(0x800000, 0x9fffff) AM_ROM AM_REGION("user1", 0) AM_RANGE(0x300000, 0x300005) AM_READWRITE(srmp6_inputs_r, srmp6_input_select_w) // inputs diff --git a/src/mame/drivers/srumbler.c b/src/mame/drivers/srumbler.c index a57f72c8ec4..f40eb871329 100644 --- a/src/mame/drivers/srumbler.c +++ b/src/mame/drivers/srumbler.c @@ -27,27 +27,31 @@ WRITE8_MEMBER(srumbler_state::srumbler_bankswitch_w) Note that 5000-8fff can be either ROM or RAM, so we should handle that as well to be 100% accurate. */ - int i; - UINT8 *ROM = memregion("user1")->base(); UINT8 *prom1 = memregion("proms")->base() + (data & 0xf0); UINT8 *prom2 = memregion("proms")->base() + 0x100 + ((data & 0x0f) << 4); - for (i = 0x05;i < 0x10;i++) + for (int i = 0x05;i < 0x10;i++) { + /* bit 2 of prom1 selects ROM or RAM - not supported */ int bank = ((prom1[i] & 0x03) << 4) | (prom2[i] & 0x0f); - char bankname[10]; - /* bit 2 of prom1 selects ROM or RAM - not supported */ + char bankname[10]; sprintf(bankname, "%04x", i*0x1000); - membank(bankname)->set_base(&ROM[bank*0x1000]); + membank(bankname)->set_entry(bank); } } void srumbler_state::machine_start() { - address_space &space = m_maincpu->space(AS_PROGRAM); - /* initialize banked ROM pointers */ - srumbler_bankswitch_w(space,0,0); + for (int i = 0x05; i < 0x10; i++) + { + char bankname[10]; + sprintf(bankname, "%04x", i*0x1000); + membank(bankname)->configure_entries(0, 64, memregion("user1")->base(), 0x1000); + } + + /* initialize banked ROM pointers */ + srumbler_bankswitch_w(m_maincpu->space(AS_PROGRAM), 0, 0); } TIMER_DEVICE_CALLBACK_MEMBER(srumbler_state::srumbler_interrupt) @@ -84,7 +88,7 @@ static ADDRESS_MAP_START( srumbler_map, AS_PROGRAM, 8, srumbler_state ) AM_RANGE(0x400e, 0x400e) AM_WRITE(soundlatch_byte_w) AM_RANGE(0x5000, 0x5fff) AM_ROMBANK("5000") AM_WRITE(srumbler_foreground_w) AM_SHARE("foregroundram") /* Banked ROM */ AM_RANGE(0x6000, 0x6fff) AM_ROMBANK("6000") /* Banked ROM */ - AM_RANGE(0x6000, 0x6fff) AM_WRITENOP /* Video RAM 2 ??? (not used) */ + AM_RANGE(0x6000, 0x6fff) AM_WRITENOP /* Video RAM 2 ??? (not used) */ AM_RANGE(0x7000, 0x7fff) AM_ROMBANK("7000") /* Banked ROM */ AM_RANGE(0x7000, 0x73ff) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") AM_RANGE(0x8000, 0x8fff) AM_ROMBANK("8000") /* Banked ROM */ diff --git a/src/mame/drivers/suna16.c b/src/mame/drivers/suna16.c index 791ee872c6b..df926653c97 100644 --- a/src/mame/drivers/suna16.c +++ b/src/mame/drivers/suna16.c @@ -288,22 +288,28 @@ ADDRESS_MAP_END Back Street Soccer ***************************************************************************/ +MACHINE_START_MEMBER(suna16_state, bssoccer) +{ + membank("bank1")->configure_entries(0, 8, memregion("pcm1")->base() + 0x1000, 0x10000); + membank("bank2")->configure_entries(0, 8, memregion("pcm2")->base() + 0x1000, 0x10000); +} + /* Bank Switching */ WRITE8_MEMBER(suna16_state::bssoccer_pcm_1_bankswitch_w) { - UINT8 *RAM = memregion("pcm1")->base(); - int bank = data & 7; + const int bank = data & 7; if (bank & ~7) logerror("CPU#2 PC %06X - ROM bank unknown bits: %02X\n", space.device().safe_pc(), data); - membank("bank1")->set_base(&RAM[bank * 0x10000 + 0x1000]); + printf("%d %d\n", 1, bank); + membank("bank1")->set_entry(bank); } WRITE8_MEMBER(suna16_state::bssoccer_pcm_2_bankswitch_w) { - UINT8 *RAM = memregion("pcm2")->base(); - int bank = data & 7; + const int bank = data & 7; if (bank & ~7) logerror("CPU#3 PC %06X - ROM bank unknown bits: %02X\n", space.device().safe_pc(), data); - membank("bank2")->set_base(&RAM[bank * 0x10000 + 0x1000]); + printf("%d %d\n", 2, bank); + membank("bank2")->set_entry(bank); } @@ -366,10 +372,9 @@ ADDRESS_MAP_END WRITE8_MEMBER(suna16_state::uballoon_pcm_1_bankswitch_w) { - UINT8 *RAM = memregion("pcm1")->base(); - int bank = data & 1; + const int bank = data & 1; if (bank & ~1) logerror("CPU#2 PC %06X - ROM bank unknown bits: %02X\n", space.device().safe_pc(), data); - membank("bank1")->set_base(&RAM[bank * 0x10000 + 0x400]); + membank("bank1")->set_entry(bank); } /* Memory maps: Yes, *no* RAM */ @@ -387,6 +392,11 @@ static ADDRESS_MAP_START( uballoon_pcm_1_io_map, AS_IO, 8, suna16_state ) AM_RANGE(0x03, 0x03) AM_WRITE(uballoon_pcm_1_bankswitch_w) // Rom Bank ADDRESS_MAP_END +MACHINE_START_MEMBER(suna16_state,uballoon) +{ + membank("bank1")->configure_entries(0, 2, memregion("pcm1")->base() + 0x400, 0x10000); +} + MACHINE_RESET_MEMBER(suna16_state,uballoon) { address_space &space = m_maincpu->space(AS_PROGRAM); @@ -812,6 +822,8 @@ static MACHINE_CONFIG_START( bssoccer, suna16_state ) MCFG_QUANTUM_TIME(attotime::from_hz(6000)) + MCFG_MACHINE_START_OVERRIDE(suna16_state,bssoccer) + /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -869,6 +881,7 @@ static MACHINE_CONFIG_START( uballoon, suna16_state ) MCFG_QUANTUM_TIME(attotime::from_hz(6000)) + MCFG_MACHINE_START_OVERRIDE(suna16_state,uballoon) MCFG_MACHINE_RESET_OVERRIDE(suna16_state,uballoon) /* video hardware */ diff --git a/src/mame/includes/suna16.h b/src/mame/includes/suna16.h index 54c6a75841e..b7136d46524 100644 --- a/src/mame/includes/suna16.h +++ b/src/mame/includes/suna16.h @@ -46,6 +46,7 @@ public: DECLARE_WRITE16_MEMBER(bestbest_flipscreen_w); DECLARE_READ16_MEMBER(suna16_paletteram16_r); DECLARE_WRITE16_MEMBER(suna16_paletteram16_w); + DECLARE_MACHINE_START(bssoccer); DECLARE_WRITE8_MEMBER(bssoccer_DAC1_w); DECLARE_WRITE8_MEMBER(bssoccer_DAC2_w); DECLARE_WRITE8_MEMBER(bssoccer_DAC3_w); @@ -54,6 +55,7 @@ public: DECLARE_DRIVER_INIT(uballoon); virtual void video_start(); DECLARE_MACHINE_RESET(uballoon); + DECLARE_MACHINE_START(uballoon); UINT32 screen_update_suna16(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); UINT32 screen_update_bestbest(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); TIMER_DEVICE_CALLBACK_MEMBER(bssoccer_interrupt);