From 3879fb5b7e6d596d808a905f700b83ec74bbcd1f Mon Sep 17 00:00:00 2001 From: "Alex W. Jackson" Date: Sat, 4 Oct 2014 23:28:10 +0000 Subject: [PATCH] devfind.h: allow ioport_finder to be dereferenced when NULL so read_safe() can be used (nw) --- src/emu/devfind.h | 3 +++ src/mame/drivers/namcos22.c | 4 ---- src/mame/drivers/namcos23.c | 9 +++------ src/mame/drivers/taitojc.c | 4 ---- src/mame/includes/namcos22.h | 6 ++++-- src/mame/includes/taitojc.h | 5 +++-- 6 files changed, 13 insertions(+), 18 deletions(-) diff --git a/src/emu/devfind.h b/src/emu/devfind.h index 942de1f22d7..ef47531781b 100644 --- a/src/emu/devfind.h +++ b/src/emu/devfind.h @@ -226,6 +226,9 @@ public: // make reference use transparent as well operator ioport_port &() { assert(object_finder_base::m_target != NULL); return *object_finder_base::m_target; } + // allow dereference even when target is NULL so read_safe() can be used + ioport_port *operator->() const { return object_finder_base::m_target; } + // finder virtual bool findit(bool isvalidation = false) { diff --git a/src/mame/drivers/namcos22.c b/src/mame/drivers/namcos22.c index 87c996aa4ee..db8de51597d 100644 --- a/src/mame/drivers/namcos22.c +++ b/src/mame/drivers/namcos22.c @@ -3732,10 +3732,6 @@ void namcos22_state::machine_reset() void namcos22_state::machine_start() { - static const char *const tags[] = { "ADC.0", "ADC.1", "ADC.2", "ADC.3", "ADC.4", "ADC.5", "ADC.6", "ADC.7" }; - for (int i = 0; i < 8; i++) - m_adc_ports[i] = ioport(tags[i]); - m_slave_simulation_active = false; m_portbits[0] = 0xffff; m_portbits[1] = 0xffff; diff --git a/src/mame/drivers/namcos23.c b/src/mame/drivers/namcos23.c index 9f8531ac619..6f7088672df 100644 --- a/src/mame/drivers/namcos23.c +++ b/src/mame/drivers/namcos23.c @@ -1376,7 +1376,8 @@ public: m_p2(*this, "P2"), m_screen(*this, "screen"), m_palette(*this, "palette"), - m_generic_paletteram_32(*this, "paletteram") + m_generic_paletteram_32(*this, "paletteram"), + m_adc_ports(*this, "ADC") { } required_device m_maincpu; @@ -1401,6 +1402,7 @@ public: required_device m_screen; required_device m_palette; required_shared_ptr m_generic_paletteram_32; + optional_ioport_array<4> m_adc_ports; c404_t m_c404; c361_t m_c361; @@ -1410,7 +1412,6 @@ public: c422_t m_c422; render_t m_render; - ioport_port *m_adc_ports[4]; tilemap_t *m_bgtilemap; UINT8 m_jvssense; INT32 m_has_jvsio; @@ -3219,10 +3220,6 @@ INPUT_PORTS_END void namcos23_state::machine_start() { - static const char *const tags[] = { "ADC.0", "ADC.1", "ADC.2", "ADC.3" }; - for (int i = 0; i < 4; i++) - m_adc_ports[i] = ioport(tags[i]); - m_c361.timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(namcos23_state::c361_timer_cb),this)); m_c361.timer->adjust(attotime::never); diff --git a/src/mame/drivers/taitojc.c b/src/mame/drivers/taitojc.c index b4c988d94e8..55d143cf8c3 100644 --- a/src/mame/drivers/taitojc.c +++ b/src/mame/drivers/taitojc.c @@ -1113,10 +1113,6 @@ void taitojc_state::machine_reset() void taitojc_state::machine_start() { - static const char *const tags[] = { "AN.0", "AN.1", "AN.2", "AN.3", "AN.4", "AN.5", "AN.6", "AN.7" }; - for (int i = 0; i < 8; i++) - m_analog_ports[i] = ioport(tags[i]); - // register for savestates save_item(NAME(m_texture_x)); save_item(NAME(m_texture_y)); diff --git a/src/mame/includes/namcos22.h b/src/mame/includes/namcos22.h index 1d613db967f..4c05f2d949f 100644 --- a/src/mame/includes/namcos22.h +++ b/src/mame/includes/namcos22.h @@ -199,7 +199,8 @@ public: m_pc_pedal_interrupt(*this, "pc_p_int"), m_gfxdecode(*this, "gfxdecode"), m_screen(*this, "screen"), - m_palette(*this, "palette") + m_palette(*this, "palette"), + m_adc_ports(*this, "ADC") { } required_device m_maincpu; @@ -228,8 +229,9 @@ public: required_device m_gfxdecode; required_device m_screen; required_device m_palette; + optional_ioport_array<8> m_adc_ports; + - ioport_port *m_adc_ports[8]; UINT8 m_syscontrol[0x20]; bool m_dsp_irq_enabled; emu_timer *m_ar_tb_interrupt[2]; diff --git a/src/mame/includes/taitojc.h b/src/mame/includes/taitojc.h index d07c302ad16..63bec6e3c60 100644 --- a/src/mame/includes/taitojc.h +++ b/src/mame/includes/taitojc.h @@ -51,7 +51,8 @@ public: m_palette_ram(*this, "palette_ram"), m_gfxdecode(*this, "gfxdecode"), m_screen(*this, "screen"), - m_palette(*this, "palette") + m_palette(*this, "palette"), + m_analog_ports(*this, "AN") { m_mcu_output = 0; m_speed_meter = 0; @@ -74,8 +75,8 @@ public: required_device m_gfxdecode; required_device m_screen; required_device m_palette; + optional_ioport_array<8> m_analog_ports; - ioport_port *m_analog_ports[8]; taitojc_renderer *m_renderer; int m_texture_x;