Eliminate some explicit device tag lookups (nw)

This commit is contained in:
AJR 2018-05-13 08:59:08 -04:00
parent 48c4db053c
commit 3dda481107
9 changed files with 32 additions and 30 deletions

View File

@ -366,6 +366,7 @@ MACHINE_CONFIG_START(namcond1_state::namcond1)
MCFG_YGV608_PALETTE("palette") MCFG_YGV608_PALETTE("palette")
MCFG_YGV608_VBLANK_HANDLER(WRITELINE(*this, namcond1_state, vblank_irq_w)) MCFG_YGV608_VBLANK_HANDLER(WRITELINE(*this, namcond1_state, vblank_irq_w))
MCFG_YGV608_RASTER_HANDLER(WRITELINE(*this, namcond1_state, raster_irq_w)) MCFG_YGV608_RASTER_HANDLER(WRITELINE(*this, namcond1_state, raster_irq_w))
MCFG_VIDEO_SET_SCREEN("screen")
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_ADD("screen", RASTER)

View File

@ -26,6 +26,7 @@ DEFINE_DEVICE_TYPE(NB1413M3, nb1413m3_device, "nb1413m3", "NB1413 Mahjong Custom
nb1413m3_device::nb1413m3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) nb1413m3_device::nb1413m3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, NB1413M3, tag, owner, clock), : device_t(mconfig, NB1413M3, tag, owner, clock),
m_maincpu(*this, "^maincpu"),
m_sndromrgntag("voice"), m_sndromrgntag("voice"),
m_sndrombank1(0), m_sndrombank1(0),
m_sndrombank2(0), m_sndrombank2(0),
@ -124,7 +125,7 @@ TIMER_CALLBACK_MEMBER( nb1413m3_device::timer_callback )
{ {
if (m_nmi_enable) if (m_nmi_enable)
{ {
machine().device("maincpu")->execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
m_nmi_count++; m_nmi_count++;
} }

View File

@ -161,6 +161,7 @@ public:
DECLARE_WRITE8_MEMBER( outcoin_w ); DECLARE_WRITE8_MEMBER( outcoin_w );
DECLARE_WRITE8_MEMBER( vcrctrl_w ); DECLARE_WRITE8_MEMBER( vcrctrl_w );
required_device<cpu_device> m_maincpu;
const char * m_sndromrgntag; const char * m_sndromrgntag;
int m_sndrombank1; int m_sndrombank1;
int m_sndrombank2; int m_sndrombank2;

View File

@ -311,7 +311,7 @@ DEFINE_DEVICE_TYPE(ATARI_ANTIC, antic_device, "antic", "Atari ANTIC")
antic_device::antic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : antic_device::antic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, ATARI_ANTIC, tag, owner, clock), device_t(mconfig, ATARI_ANTIC, tag, owner, clock),
device_video_interface(mconfig, *this), device_video_interface(mconfig, *this),
m_gtia_tag(nullptr), m_gtia(*this, finder_base::DUMMY_TAG),
m_maincpu(*this, ":maincpu"), m_maincpu(*this, ":maincpu"),
m_djoy_b(*this, ":djoy_b"), m_djoy_b(*this, ":djoy_b"),
m_artifacts(*this, ":artifacts"), m_artifacts(*this, ":artifacts"),
@ -345,9 +345,6 @@ antic_device::antic_device(const machine_config &mconfig, const char *tag, devic
void antic_device::device_start() void antic_device::device_start()
{ {
m_gtia = machine().device<gtia_device>(m_gtia_tag);
assert(m_gtia);
m_bitmap = std::make_unique<bitmap_ind16>(screen().width(), screen().height()); m_bitmap = std::make_unique<bitmap_ind16>(screen().width(), screen().height());
m_cclk_expand = make_unique_clear<uint32_t[]>(21 * 256); m_cclk_expand = make_unique_clear<uint32_t[]>(21 * 256);
@ -1177,7 +1174,7 @@ READ8_MEMBER ( antic_device::read )
data = m_r.antic09; data = m_r.antic09;
break; break;
case 10: /* WSYNC read */ case 10: /* WSYNC read */
machine().device("maincpu")->execute().spin_until_trigger(TRIGGER_HSYNC); m_maincpu->spin_until_trigger(TRIGGER_HSYNC);
m_w.wsync = 1; m_w.wsync = 1;
data = m_r.antic0a; data = m_r.antic0a;
break; break;
@ -1287,7 +1284,7 @@ WRITE8_MEMBER ( antic_device::write )
break; break;
case 10: /* WSYNC write */ case 10: /* WSYNC write */
LOG(("ANTIC 0A write WSYNC $%02X\n", data)); LOG(("ANTIC 0A write WSYNC $%02X\n", data));
machine().device("maincpu")->execute().spin_until_trigger(TRIGGER_HSYNC); m_maincpu->spin_until_trigger(TRIGGER_HSYNC);
m_w.wsync = 1; m_w.wsync = 1;
break; break;
case 11: case 11:
@ -1975,7 +1972,7 @@ TIMER_CALLBACK_MEMBER( antic_device::issue_dli )
{ {
LOG((" @cycle #%3d issue DLI\n", cycle())); LOG((" @cycle #%3d issue DLI\n", cycle()));
m_r.nmist |= DLI_NMI; m_r.nmist |= DLI_NMI;
machine().device("maincpu")->execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
} }
else else
{ {
@ -2022,7 +2019,7 @@ TIMER_CALLBACK_MEMBER( antic_device::steal_cycles )
LOG((" @cycle #%3d steal %d cycles\n", cycle(), m_steal_cycles)); LOG((" @cycle #%3d steal %d cycles\n", cycle(), m_steal_cycles));
timer_set(ANTIC_TIME_FROM_CYCLES(m_steal_cycles), TIMER_LINE_DONE); timer_set(ANTIC_TIME_FROM_CYCLES(m_steal_cycles), TIMER_LINE_DONE);
m_steal_cycles = 0; m_steal_cycles = 0;
machine().device("maincpu")->execute().spin_until_trigger(TRIGGER_STEAL); m_maincpu->spin_until_trigger(TRIGGER_STEAL);
} }
@ -2036,7 +2033,7 @@ TIMER_CALLBACK_MEMBER( antic_device::steal_cycles )
*****************************************************************************/ *****************************************************************************/
TIMER_CALLBACK_MEMBER( antic_device::scanline_render ) TIMER_CALLBACK_MEMBER( antic_device::scanline_render )
{ {
address_space &space = machine().device("maincpu")->memory().space(AS_PROGRAM); address_space &space = m_maincpu->space(AS_PROGRAM);
LOG((" @cycle #%3d render mode $%X lines to go #%d\n", cycle(), (m_cmd & 0x0f), m_modelines)); LOG((" @cycle #%3d render mode $%X lines to go #%d\n", cycle(), (m_cmd & 0x0f), m_modelines));
@ -2106,7 +2103,7 @@ void antic_device::LMS(int new_cmd)
**************************************************************/ **************************************************************/
if( new_cmd & ANTIC_LMS ) if( new_cmd & ANTIC_LMS )
{ {
address_space &space = machine().device("maincpu")->memory().space(AS_PROGRAM); address_space &space = m_maincpu->space(AS_PROGRAM);
int addr = RDANTIC(space); int addr = RDANTIC(space);
m_doffs = (m_doffs + 1) & DOFFS; m_doffs = (m_doffs + 1) & DOFFS;
addr += 256 * RDANTIC(space); addr += 256 * RDANTIC(space);
@ -2131,7 +2128,7 @@ void antic_device::LMS(int new_cmd)
*****************************************************************************/ *****************************************************************************/
void antic_device::scanline_dma(int param) void antic_device::scanline_dma(int param)
{ {
address_space &space = machine().device("maincpu")->memory().space(AS_PROGRAM); address_space &space = m_maincpu->space(AS_PROGRAM);
LOG((" @cycle #%3d DMA fetch\n", cycle())); LOG((" @cycle #%3d DMA fetch\n", cycle()));
if (m_scanline == VBL_END) if (m_scanline == VBL_END)
m_r.nmist &= ~VBL_NMI; m_r.nmist &= ~VBL_NMI;

View File

@ -50,7 +50,7 @@ public:
virtual void device_reset() override; virtual void device_reset() override;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
void set_gtia_tag(const char *tag) { m_gtia_tag = tag; } void set_gtia_tag(const char *tag) { m_gtia.set_tag(tag); }
DECLARE_READ8_MEMBER( read ); DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write ); DECLARE_WRITE8_MEMBER( write );
@ -113,8 +113,7 @@ private:
}; };
const char *m_gtia_tag; required_device<gtia_device> m_gtia;
gtia_device *m_gtia;
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
optional_ioport m_djoy_b; optional_ioport m_djoy_b;
optional_ioport m_artifacts; optional_ioport m_artifacts;

View File

@ -358,6 +358,7 @@ tia_video_device::tia_video_device(const machine_config &mconfig, device_type ty
, m_read_input_port_cb(*this) , m_read_input_port_cb(*this)
, m_databus_contents_cb(*this) , m_databus_contents_cb(*this)
, m_vsync_cb(*this) , m_vsync_cb(*this)
, m_maincpu(*this, "^maincpu")
{ {
} }
@ -658,13 +659,13 @@ int tia_video_device::collision_check(uint8_t* p1, uint8_t* p2, int x1, int x2)
int tia_video_device::current_x() int tia_video_device::current_x()
{ {
return 3 * ((machine().device<cpu_device>("maincpu")->total_cycles() - frame_cycles) % 76) - 68; return 3 * ((m_maincpu->total_cycles() - frame_cycles) % 76) - 68;
} }
int tia_video_device::current_y() int tia_video_device::current_y()
{ {
return (machine().device<cpu_device>("maincpu")->total_cycles() - frame_cycles) / 76; return (m_maincpu->total_cycles() - frame_cycles) / 76;
} }
@ -1003,11 +1004,11 @@ void tia_video_device::update_bitmap(int next_x, int next_y)
WRITE8_MEMBER( tia_video_device::WSYNC_w ) WRITE8_MEMBER( tia_video_device::WSYNC_w )
{ {
int cycles = machine().device<cpu_device>("maincpu")->total_cycles() - frame_cycles; int cycles = m_maincpu->total_cycles() - frame_cycles;
if (cycles % 76) if (cycles % 76)
{ {
space.device().execute().adjust_icount(cycles % 76 - 76); m_maincpu->adjust_icount(cycles % 76 - 76);
} }
} }
@ -1044,7 +1045,7 @@ WRITE8_MEMBER( tia_video_device::VBLANK_w )
{ {
if (data & 0x80) if (data & 0x80)
{ {
paddle_start = machine().device<cpu_device>("maincpu")->total_cycles(); paddle_start = m_maincpu->total_cycles();
} }
if ( ! ( VBLANK & 0x40 ) ) { if ( ! ( VBLANK & 0x40 ) ) {
INPT4 = 0x80; INPT4 = 0x80;
@ -1797,7 +1798,7 @@ WRITE8_MEMBER( tia_video_device::GRP1_w )
READ8_MEMBER( tia_video_device::INPT_r ) READ8_MEMBER( tia_video_device::INPT_r )
{ {
uint64_t elapsed = machine().device<cpu_device>("maincpu")->total_cycles() - paddle_start; uint64_t elapsed = m_maincpu->total_cycles() - paddle_start;
uint16_t input = TIA_INPUT_PORT_ALWAYS_ON; uint16_t input = TIA_INPUT_PORT_ALWAYS_ON;
if ( !m_read_input_port_cb.isnull() ) if ( !m_read_input_port_cb.isnull() )
{ {

View File

@ -116,6 +116,8 @@ private:
devcb_read8 m_databus_contents_cb; devcb_read8 m_databus_contents_cb;
devcb_write16 m_vsync_cb; devcb_write16 m_vsync_cb;
required_device<cpu_device> m_maincpu;
struct player_gfx p0gfx; struct player_gfx p0gfx;
struct player_gfx p1gfx; struct player_gfx p1gfx;

View File

@ -318,6 +318,7 @@ ygv608_device::ygv608_device( const machine_config &mconfig, const char *tag, de
: device_t(mconfig, YGV608, tag, owner, clock), : device_t(mconfig, YGV608, tag, owner, clock),
device_gfx_interface(mconfig, *this, GFXDECODE_NAME(ygv608)), device_gfx_interface(mconfig, *this, GFXDECODE_NAME(ygv608)),
device_memory_interface(mconfig, *this), device_memory_interface(mconfig, *this),
device_video_interface(mconfig, *this),
m_io_space_config("io", ENDIANNESS_BIG, 8, 6, 0, address_map_constructor(FUNC(ygv608_device::regs_map), this)), m_io_space_config("io", ENDIANNESS_BIG, 8, 6, 0, address_map_constructor(FUNC(ygv608_device::regs_map), this)),
m_vblank_handler(*this), m_vblank_handler(*this),
m_raster_handler(*this) m_raster_handler(*this)
@ -378,7 +379,6 @@ void ygv608_device::device_start()
m_iospace = &space(AS_IO); m_iospace = &space(AS_IO);
// TODO: tagging configuration // TODO: tagging configuration
m_screen = downcast<screen_device *>(machine().device("screen"));
m_vblank_handler.resolve(); m_vblank_handler.resolve();
m_raster_handler.resolve(); m_raster_handler.resolve();
m_vblank_timer = timer_alloc(VBLANK_TIMER); m_vblank_timer = timer_alloc(VBLANK_TIMER);
@ -1386,7 +1386,7 @@ READ8_MEMBER(ygv608_device::register_data_r)
READ8_MEMBER( ygv608_device::status_port_r ) READ8_MEMBER( ygv608_device::status_port_r )
{ {
// TODO: we need to use h/vpos in case of border support instead due of how MAME framework works here. // TODO: we need to use h/vpos in case of border support instead due of how MAME framework works here.
return (m_screen_status & 0x1c) | (m_screen->hblank()<<1) | m_screen->vblank(); return (m_screen_status & 0x1c) | (screen().hblank()<<1) | screen().vblank();
} }
// P#7R - system control port // P#7R - system control port
@ -2085,7 +2085,7 @@ attotime ygv608_device::raster_sync_offset()
} }
// TODO: actual sync not taken into account, needs a better test than NCV2 limited case // TODO: actual sync not taken into account, needs a better test than NCV2 limited case
return m_screen->time_until_pos(m_raster_irq_vpos,m_raster_irq_hpos); return screen().time_until_pos(m_raster_irq_vpos,m_raster_irq_hpos);
} }
// R#17 / R#24 - base address // R#17 / R#24 - base address
@ -2261,14 +2261,14 @@ void ygv608_device::screen_configure()
// TODO: Dig Dug Original wants this to be 60.60 Hz (like original Namco HW), lets compensate somehow // TODO: Dig Dug Original wants this to be 60.60 Hz (like original Namco HW), lets compensate somehow
// (clock is really 6144000 x 8 = 49152000, so it must have same parameters in practice) // (clock is really 6144000 x 8 = 49152000, so it must have same parameters in practice)
attoseconds_t period = HZ_TO_ATTOSECONDS(m_screen->clock()) * (m_crtc.vtotal + m_crtc.display_vsync) * ((m_crtc.htotal + 12 - m_crtc.display_hsync) / 2); attoseconds_t period = HZ_TO_ATTOSECONDS(screen().clock()) * (m_crtc.vtotal + m_crtc.display_vsync) * ((m_crtc.htotal + 12 - m_crtc.display_hsync) / 2);
m_screen->configure(m_crtc.htotal / 2, m_crtc.vtotal, visarea, period ); screen().configure(m_crtc.htotal / 2, m_crtc.vtotal, visarea, period );
// reset vblank timer // reset vblank timer
m_vblank_timer->reset(); m_vblank_timer->reset();
//m_vblank_timer->adjust(m_screen->time_until_pos(m_crtc.display_vstart+m_crtc.display_height,0), 0, m_screen->frame_period()); //m_vblank_timer->adjust(screen().time_until_pos(m_crtc.display_vstart+m_crtc.display_height,0), 0, screen().frame_period());
m_vblank_timer->adjust(m_screen->time_until_pos(m_crtc.display_height,0), 0, m_screen->frame_period()); m_vblank_timer->adjust(screen().time_until_pos(m_crtc.display_height,0), 0, screen().frame_period());
} }

View File

@ -15,7 +15,8 @@
class ygv608_device : public device_t, class ygv608_device : public device_t,
public device_gfx_interface, public device_gfx_interface,
public device_memory_interface public device_memory_interface,
public device_video_interface
{ {
public: public:
// construction/destruction // construction/destruction
@ -251,7 +252,6 @@ private:
// screen section // screen section
devcb_write_line m_vblank_handler; devcb_write_line m_vblank_handler;
devcb_write_line m_raster_handler; devcb_write_line m_raster_handler;
screen_device *m_screen;
emu_timer *m_vblank_timer; emu_timer *m_vblank_timer;
emu_timer *m_raster_timer; emu_timer *m_raster_timer;