devfind.h: allow ioport_finder to be dereferenced when NULL so read_safe() can be used (nw)

This commit is contained in:
Alex W. Jackson 2014-10-04 23:28:10 +00:00
parent 762420efad
commit 3879fb5b7e
6 changed files with 13 additions and 18 deletions

View File

@ -226,6 +226,9 @@ public:
// make reference use transparent as well
operator ioport_port &() { assert(object_finder_base<ioport_port>::m_target != NULL); return *object_finder_base<ioport_port>::m_target; }
// allow dereference even when target is NULL so read_safe() can be used
ioport_port *operator->() const { return object_finder_base<ioport_port>::m_target; }
// finder
virtual bool findit(bool isvalidation = false)
{

View File

@ -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;

View File

@ -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<mips3_device> m_maincpu;
@ -1401,6 +1402,7 @@ public:
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
required_shared_ptr<UINT32> 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);

View File

@ -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));

View File

@ -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<cpu_device> m_maincpu;
@ -228,8 +229,9 @@ public:
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_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];

View File

@ -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<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
optional_ioport_array<8> m_analog_ports;
ioport_port *m_analog_ports[8];
taitojc_renderer *m_renderer;
int m_texture_x;