diff options
author | 2015-08-13 13:18:13 +0200 | |
---|---|---|
committer | 2015-08-13 13:18:13 +0200 | |
commit | 21b7eb47cd7568cd8f74315458004992fe27540d (patch) | |
tree | 24492417faf927c1793a282a2bd607222b82c62c | |
parent | 70fe93c86627c98cee6cc50add4b4a33f19a2f03 (diff) |
reduce tagmap lookups and read_safe usage in a few drivers (nw)
-rw-r--r-- | src/mame/drivers/itech8.c | 7 | ||||
-rw-r--r-- | src/mame/drivers/megatech.c | 30 | ||||
-rw-r--r-- | src/mame/includes/itech8.h | 10 | ||||
-rw-r--r-- | src/mame/includes/megadriv.h | 2 | ||||
-rw-r--r-- | src/mame/machine/atari.c | 12 | ||||
-rw-r--r-- | src/mame/machine/megadriv.c | 24 | ||||
-rw-r--r-- | src/mame/machine/slikshot.c | 4 | ||||
-rw-r--r-- | src/mame/video/itech8.c | 3 |
8 files changed, 52 insertions, 40 deletions
diff --git a/src/mame/drivers/itech8.c b/src/mame/drivers/itech8.c index ca3596935ff..4c275d7ceb8 100644 --- a/src/mame/drivers/itech8.c +++ b/src/mame/drivers/itech8.c @@ -504,7 +504,6 @@ #include "machine/6821pia.h" #include "machine/6522via.h" #include "machine/nvram.h" -#include "machine/ticket.h" #include "includes/itech8.h" #include "sound/2203intf.h" #include "sound/2608intf.h" @@ -519,6 +518,8 @@ +IOPORT_ARRAY_MEMBER(itech8_state::analog_inputs) { "AN_C", "AN_D", "AN_E", "AN_F" }; + /************************************* * * Interrupt handling @@ -747,7 +748,7 @@ WRITE8_MEMBER(itech8_state::pia_portb_out) /* bit 5 controls the coin counter */ /* bit 6 controls the diagnostic sound LED */ m_pia_portb_data = data; - machine().device<ticket_dispenser_device>("ticket")->write(space, 0, (data & 0x10) << 3); + m_ticket->write(space, 0, (data & 0x10) << 3); coin_counter_w(machine(), 0, (data & 0x20) >> 5); } @@ -761,7 +762,7 @@ WRITE8_MEMBER(itech8_state::ym2203_portb_out) /* bit 6 controls the diagnostic sound LED */ /* bit 7 controls the ticket dispenser */ m_pia_portb_data = data; - machine().device<ticket_dispenser_device>("ticket")->write(machine().driver_data()->generic_space(), 0, data & 0x80); + m_ticket->write(machine().driver_data()->generic_space(), 0, data & 0x80); coin_counter_w(machine(), 0, (data & 0x20) >> 5); } diff --git a/src/mame/drivers/megatech.c b/src/mame/drivers/megatech.c index 5b82e6f6373..cb0d223cff6 100644 --- a/src/mame/drivers/megatech.c +++ b/src/mame/drivers/megatech.c @@ -97,7 +97,8 @@ public: m_cart6(*this, "mt_slot6"), m_cart7(*this, "mt_slot7"), m_cart8(*this, "mt_slot8"), - m_bioscpu(*this, "mtbios") + m_bioscpu(*this, "mtbios"), + m_region_maincpu(*this, "maincpu") { } DECLARE_WRITE_LINE_MEMBER( snd_int_callback ); @@ -167,6 +168,7 @@ private: optional_device<generic_slot_device> m_cart7; optional_device<generic_slot_device> m_cart8; required_device<cpu_device> m_bioscpu; + required_memory_region m_region_maincpu; memory_region *m_cart_reg[8]; }; @@ -345,13 +347,13 @@ WRITE8_MEMBER( mtech_state::mt_sms_standard_rom_bank_w ) //printf("bank ram??\n"); break; case 1: - memcpy(sms_rom+0x0000, space.machine().root_device().memregion("maincpu")->base()+bank*0x4000, 0x4000); + memcpy(sms_rom+0x0000, m_region_maincpu->base()+bank*0x4000, 0x4000); break; case 2: - memcpy(sms_rom+0x4000, space.machine().root_device().memregion("maincpu")->base()+bank*0x4000, 0x4000); + memcpy(sms_rom+0x4000, m_region_maincpu->base()+bank*0x4000, 0x4000); break; case 3: - memcpy(sms_rom+0x8000, space.machine().root_device().memregion("maincpu")->base()+bank*0x4000, 0x4000); + memcpy(sms_rom+0x8000, m_region_maincpu->base()+bank*0x4000, 0x4000); break; } @@ -359,9 +361,8 @@ WRITE8_MEMBER( mtech_state::mt_sms_standard_rom_bank_w ) void mtech_state::set_genz80_as_sms() { - address_space &prg = machine().device("genesis_snd_z80")->memory().space(AS_PROGRAM); - address_space &io = machine().device("genesis_snd_z80")->memory().space(AS_IO); - sn76496_base_device *sn = machine().device<sn76496_base_device>("snsnd"); + address_space &prg = m_z80snd->space(AS_PROGRAM); + address_space &io = m_z80snd->space(AS_IO); // main ram area sms_mainram = (UINT8 *)prg.install_ram(0xc000, 0xdfff, 0, 0x2000); @@ -370,13 +371,13 @@ void mtech_state::set_genz80_as_sms() // fixed rom bank area sms_rom = (UINT8 *)prg.install_rom(0x0000, 0xbfff, NULL); - memcpy(sms_rom, machine().root_device().memregion("maincpu")->base(), 0xc000); + memcpy(sms_rom, m_region_maincpu->base(), 0xc000); prg.install_write_handler(0xfffc, 0xffff, write8_delegate(FUNC(mtech_state::mt_sms_standard_rom_bank_w),this)); // ports io.install_read_handler (0x40, 0x41, 0xff, 0x3e, read8_delegate(FUNC(mtech_state::sms_count_r),this)); - io.install_write_handler (0x40, 0x41, 0xff, 0x3e, write8_delegate(FUNC(sn76496_device::write),sn)); + io.install_write_handler (0x40, 0x41, 0xff, 0x3e, write8_delegate(FUNC(sn76496_device::write),(sn76496_base_device *)m_snsnd)); io.install_readwrite_handler (0x80, 0x80, 0xff, 0x3e, read8_delegate(FUNC(sega315_5124_device::vram_read),(sega315_5124_device *)m_vdp), write8_delegate(FUNC(sega315_5124_device::vram_write),(sega315_5124_device *)m_vdp)); io.install_readwrite_handler (0x81, 0x81, 0xff, 0x3e, read8_delegate(FUNC(sega315_5124_device::register_read),(sega315_5124_device *)m_vdp), write8_delegate(FUNC(sega315_5124_device::register_write),(sega315_5124_device *)m_vdp)); @@ -392,15 +393,14 @@ void mtech_state::set_genz80_as_sms() /* sets the megadrive z80 to it's normal ports / map */ void mtech_state::set_genz80_as_md() { - address_space &prg = machine().device("genesis_snd_z80")->memory().space(AS_PROGRAM); - ym2612_device *ym2612 = machine().device<ym2612_device>("ymsnd"); + address_space &prg = m_z80snd->space(AS_PROGRAM); prg.install_readwrite_bank(0x0000, 0x1fff, "bank1"); machine().root_device().membank("bank1")->set_base(m_genz80.z80_prgram); prg.install_ram(0x0000, 0x1fff, m_genz80.z80_prgram); - prg.install_readwrite_handler(0x4000, 0x4003, read8_delegate(FUNC(ym2612_device::read),ym2612), write8_delegate(FUNC(ym2612_device::write),ym2612)); + prg.install_readwrite_handler(0x4000, 0x4003, read8_delegate(FUNC(ym2612_device::read), (ym2612_device *)m_ymsnd), write8_delegate(FUNC(ym2612_device::write), (ym2612_device *)m_ymsnd)); prg.install_write_handler (0x6000, 0x6000, write8_delegate(FUNC(mtech_state::megadriv_z80_z80_bank_w),this)); prg.install_write_handler (0x6001, 0x6001, write8_delegate(FUNC(mtech_state::megadriv_z80_z80_bank_w),this)); prg.install_read_handler (0x6100, 0x7eff, read8_delegate(FUNC(mtech_state::megadriv_z80_unmapped_read),this)); @@ -417,7 +417,7 @@ void mtech_state::switch_cart(int gameno) m_z80snd->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); //m_maincpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); //m_z80snd->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); - machine().device("ymsnd")->reset(); + m_ymsnd->reset(); megadriv_stop_scanline_timer();// stop the scanline timer for the genesis vdp... it can be restarted in video eof when needed m_vdp->reset(); @@ -425,7 +425,7 @@ void mtech_state::switch_cart(int gameno) /* if the regions exist we're fine */ if (m_cart_reg[gameno]) { - memcpy(memregion("maincpu")->base(), m_cart_reg[gameno]->base(), 0x400000); + memcpy(m_region_maincpu->base(), m_cart_reg[gameno]->base(), 0x400000); if (!m_cart_is_genesis[gameno]) { @@ -447,7 +447,7 @@ void mtech_state::switch_cart(int gameno) else /* else, no cart.. */ { memset(memregion("mtbios")->base() + 0x8000, 0x00, 0x8000); - memset(memregion("maincpu")->base(), 0x00, 0x400000); + memset(m_region_maincpu->base(), 0x00, 0x400000); } } diff --git a/src/mame/includes/itech8.h b/src/mame/includes/itech8.h index ee957d9c621..a35d6ffbbf8 100644 --- a/src/mame/includes/itech8.h +++ b/src/mame/includes/itech8.h @@ -7,6 +7,7 @@ **************************************************************************/ +#include "machine/ticket.h" #include "video/tlc34076.h" #include "video/tms34061.h" @@ -23,6 +24,10 @@ public: m_tms34061(*this, "tms34061"), m_tlc34076(*this, "tlc34076"), m_screen(*this, "screen"), + m_ticket(*this, "ticket"), + m_an(*this, analog_inputs), + m_fakex(*this, "FAKEX"), + m_fakey(*this, "FAKEY"), m_visarea(0, 0, 0, 0) { } enum @@ -40,6 +45,11 @@ public: required_device<tms34061_device> m_tms34061; required_device<tlc34076_device> m_tlc34076; required_device<screen_device> m_screen; + required_device<ticket_dispenser_device> m_ticket; + DECLARE_IOPORT_ARRAY(analog_inputs); + optional_ioport_array<4> m_an; + optional_ioport m_fakex; + optional_ioport m_fakey; rectangle m_visarea; diff --git a/src/mame/includes/megadriv.h b/src/mame/includes/megadriv.h index 96cf8fa3f1c..b30205cb890 100644 --- a/src/mame/includes/megadriv.h +++ b/src/mame/includes/megadriv.h @@ -46,12 +46,14 @@ public: m_z80snd(*this,"genesis_snd_z80"), m_ymsnd(*this,"ymsnd"), m_vdp(*this,"gen_vdp"), + m_snsnd(*this, "snsnd"), m_megadrive_ram(*this,"megadrive_ram") { } required_device<m68000_base_device> m_maincpu; optional_device<cpu_device> m_z80snd; optional_device<ym2612_device> m_ymsnd; required_device<sega315_5313_device> m_vdp; + required_device<sn76496_base_device> m_snsnd; optional_shared_ptr<UINT16> m_megadrive_ram; ioport_port *m_io_reset; diff --git a/src/mame/machine/atari.c b/src/mame/machine/atari.c index 34b2cdbbb4c..d576305cad2 100644 --- a/src/mame/machine/atari.c +++ b/src/mame/machine/atari.c @@ -98,15 +98,15 @@ POKEY_KEYBOARD_CB_MEMBER(atari_common_state::a800_keyboard) { case pokey_device::POK_KEY_BREAK: /* special case ... */ - ret |= ((m_keyboard[0]->read_safe(0) & 0x08) ? 0x02 : 0x00); + ret |= ((m_keyboard[0] && m_keyboard[0]->read() & 0x08) ? 0x02 : 0x00); break; case pokey_device::POK_KEY_CTRL: /* CTRL */ - ret |= ((m_fake->read_safe(0) & 0x02) ? 0x02 : 0x00); + ret |= ((m_fake && m_fake->read() & 0x02) ? 0x02 : 0x00); break; case pokey_device::POK_KEY_SHIFT: /* SHIFT */ - ret |= ((m_fake->read_safe(0) & 0x01) ? 0x02 : 0x00); + ret |= ((m_fake && m_fake->read() & 0x01) ? 0x02 : 0x00); break; } @@ -115,7 +115,7 @@ POKEY_KEYBOARD_CB_MEMBER(atari_common_state::a800_keyboard) return ret; /* decode regular key */ - ipt = m_keyboard[k543210 >> 3]->read_safe(0); + ipt = m_keyboard[k543210 >> 3] ? m_keyboard[k543210 >> 3]->read() : 0; if (ipt & (1 << (k543210 & 0x07))) ret |= 0x01; @@ -162,7 +162,7 @@ POKEY_KEYBOARD_CB_MEMBER(atari_common_state::a5200_keypads) { case pokey_device::POK_KEY_BREAK: /* special case ... */ - ret |= ((m_keypad[0]->read_safe(0) & 0x01) ? 0x02 : 0x00); + ret |= ((m_keypad[0] && m_keypad[0]->read() & 0x01) ? 0x02 : 0x00); break; case pokey_device::POK_KEY_CTRL: break; @@ -184,7 +184,7 @@ POKEY_KEYBOARD_CB_MEMBER(atari_common_state::a5200_keypads) if (k543210 == 0) return ret; - ipt = m_keypad[k543210 >> 2]->read_safe(0); + ipt = m_keypad[k543210 >> 2] ? m_keypad[k543210 >> 2]->read() : 0; if (ipt & (1 << (k543210 & 0x03))) ret |= 0x01; diff --git a/src/mame/machine/megadriv.c b/src/mame/machine/megadriv.c index 03417e178e9..3b20ff80a78 100644 --- a/src/mame/machine/megadriv.c +++ b/src/mame/machine/megadriv.c @@ -214,14 +214,14 @@ READ8_MEMBER(md_base_state::megadrive_io_read_data_port_6button) { /* here we read B, C & the additional buttons */ retdata = (m_megadrive_io_data_regs[portnum] & helper) | - (((m_io_pad_3b[portnum]->read_safe(0) & 0x30) | - (m_io_pad_6b[portnum]->read_safe(0) & 0x0f)) & ~helper); + ((((m_io_pad_3b[portnum] ? m_io_pad_3b[portnum]->read() : 0) & 0x30) | + ((m_io_pad_6b[portnum] ? m_io_pad_6b[portnum]->read() : 0) & 0x0f)) & ~helper); } else { /* here we read B, C & the directional buttons */ retdata = (m_megadrive_io_data_regs[portnum] & helper) | - ((m_io_pad_3b[portnum]->read_safe(0) & 0x3f) & ~helper); + (((m_io_pad_3b[portnum] ? m_io_pad_3b[portnum]->read() : 0) & 0x3f) & ~helper); } } else @@ -230,20 +230,20 @@ READ8_MEMBER(md_base_state::megadrive_io_read_data_port_6button) { /* here we read ((Start & A) >> 2) | 0x00 */ retdata = (m_megadrive_io_data_regs[portnum] & helper) | - (((m_io_pad_3b[portnum]->read_safe(0) & 0xc0) >> 2) & ~helper); + ((((m_io_pad_3b[portnum] ? m_io_pad_3b[portnum]->read() : 0) & 0xc0) >> 2) & ~helper); } else if (m_io_stage[portnum]==2) { /* here we read ((Start & A) >> 2) | 0x0f */ retdata = (m_megadrive_io_data_regs[portnum] & helper) | - ((((m_io_pad_3b[portnum]->read_safe(0) & 0xc0) >> 2) | 0x0f) & ~helper); + (((((m_io_pad_3b[portnum] ? m_io_pad_3b[portnum]->read() : 0) & 0xc0) >> 2) | 0x0f) & ~helper); } else { /* here we read ((Start & A) >> 2) | Up and Down */ retdata = (m_megadrive_io_data_regs[portnum] & helper) | - ((((m_io_pad_3b[portnum]->read_safe(0) & 0xc0) >> 2) | - (m_io_pad_3b[portnum]->read_safe(0) & 0x03)) & ~helper); + (((((m_io_pad_3b[portnum] ? m_io_pad_3b[portnum]->read() : 0) & 0xc0) >> 2) | + ((m_io_pad_3b[portnum] ? m_io_pad_3b[portnum]->read() : 0) & 0x03)) & ~helper); } } @@ -263,14 +263,14 @@ READ8_MEMBER(md_base_state::megadrive_io_read_data_port_3button) { /* here we read B, C & the directional buttons */ retdata = (m_megadrive_io_data_regs[portnum] & helper) | - (((m_io_pad_3b[portnum]->read_safe(0) & 0x3f) | 0x40) & ~helper); + ((((m_io_pad_3b[portnum] ? m_io_pad_3b[portnum]->read() : 0) & 0x3f) | 0x40) & ~helper); } else { /* here we read ((Start & A) >> 2) | Up and Down */ retdata = (m_megadrive_io_data_regs[portnum] & helper) | - ((((m_io_pad_3b[portnum]->read_safe(0) & 0xc0) >> 2) | - (m_io_pad_3b[portnum]->read_safe(0) & 0x03) | 0x40) & ~helper); + (((((m_io_pad_3b[portnum] ? m_io_pad_3b[portnum]->read() : 0) & 0xc0) >> 2) | + ((m_io_pad_3b[portnum] ? m_io_pad_3b[portnum]->read() : 0) & 0x03) | 0x40) & ~helper); } return retdata; @@ -718,7 +718,7 @@ WRITE8_MEMBER(md_base_state::megadriv_z80_vdp_write ) case 0x15: case 0x17: // accessed by either segapsg_device or sn76496_device - space.machine().device<sn76496_base_device>("snsnd")->write(space, 0, data); + m_snsnd->write(space, 0, data); break; default: @@ -1103,7 +1103,7 @@ DRIVER_INIT_MEMBER(md_base_state, megadrie) void md_base_state::screen_eof_megadriv(screen_device &screen, bool state) { - if (m_io_reset->read_safe(0x00) & 0x01) + if (m_io_reset && m_io_reset->read() & 0x01) m_maincpu->set_input_line(INPUT_LINE_RESET, PULSE_LINE); // rising edge diff --git a/src/mame/machine/slikshot.c b/src/mame/machine/slikshot.c index 5edf4f56311..1c2ad7ac8cd 100644 --- a/src/mame/machine/slikshot.c +++ b/src/mame/machine/slikshot.c @@ -546,8 +546,8 @@ UINT32 itech8_state::screen_update_slikshot(screen_device &screen, bitmap_rgb32 screen_update_2page(screen, bitmap, cliprect); /* add the current X,Y positions to the list */ - m_xbuffer[m_ybuffer_next % YBUFFER_COUNT] = ioport("FAKEX")->read_safe(0); - m_ybuffer[m_ybuffer_next % YBUFFER_COUNT] = ioport("FAKEY")->read_safe(0); + m_xbuffer[m_ybuffer_next % YBUFFER_COUNT] = m_fakex->read(); + m_ybuffer[m_ybuffer_next % YBUFFER_COUNT] = m_fakey->read(); m_ybuffer_next++; /* determine where to draw the starting point */ diff --git a/src/mame/video/itech8.c b/src/mame/video/itech8.c index a96770f90c5..42a80eb9291 100644 --- a/src/mame/video/itech8.c +++ b/src/mame/video/itech8.c @@ -417,7 +417,6 @@ TIMER_CALLBACK_MEMBER(itech8_state::blitter_done) READ8_MEMBER(itech8_state::blitter_r) { int result = m_blitter_data[offset / 2]; - static const char *const portnames[] = { "AN_C", "AN_D", "AN_E", "AN_F" }; /* debugging */ if (FULL_LOGGING) logerror("%04x:blitter_r(%02x)\n", space.device().safe_pcbase(), offset / 2); @@ -437,7 +436,7 @@ READ8_MEMBER(itech8_state::blitter_r) /* a read from offsets 12-15 return input port values */ if (offset >= 12 && offset <= 15) - result = ioport(portnames[offset - 12])->read_safe(0x00); + result = m_an[offset - 12] ? m_an[offset - 12]->read() : 0; return result; } |