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_VBLANK_HANDLER(WRITELINE(*this, namcond1_state, vblank_irq_w))
MCFG_YGV608_RASTER_HANDLER(WRITELINE(*this, namcond1_state, raster_irq_w))
MCFG_VIDEO_SET_SCREEN("screen")
/* video hardware */
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)
: device_t(mconfig, NB1413M3, tag, owner, clock),
m_maincpu(*this, "^maincpu"),
m_sndromrgntag("voice"),
m_sndrombank1(0),
m_sndrombank2(0),
@ -124,7 +125,7 @@ TIMER_CALLBACK_MEMBER( nb1413m3_device::timer_callback )
{
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++;
}

View File

@ -161,6 +161,7 @@ public:
DECLARE_WRITE8_MEMBER( outcoin_w );
DECLARE_WRITE8_MEMBER( vcrctrl_w );
required_device<cpu_device> m_maincpu;
const char * m_sndromrgntag;
int m_sndrombank1;
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) :
device_t(mconfig, ATARI_ANTIC, tag, owner, clock),
device_video_interface(mconfig, *this),
m_gtia_tag(nullptr),
m_gtia(*this, finder_base::DUMMY_TAG),
m_maincpu(*this, ":maincpu"),
m_djoy_b(*this, ":djoy_b"),
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()
{
m_gtia = machine().device<gtia_device>(m_gtia_tag);
assert(m_gtia);
m_bitmap = std::make_unique<bitmap_ind16>(screen().width(), screen().height());
m_cclk_expand = make_unique_clear<uint32_t[]>(21 * 256);
@ -1177,7 +1174,7 @@ READ8_MEMBER ( antic_device::read )
data = m_r.antic09;
break;
case 10: /* WSYNC read */
machine().device("maincpu")->execute().spin_until_trigger(TRIGGER_HSYNC);
m_maincpu->spin_until_trigger(TRIGGER_HSYNC);
m_w.wsync = 1;
data = m_r.antic0a;
break;
@ -1287,7 +1284,7 @@ WRITE8_MEMBER ( antic_device::write )
break;
case 10: /* WSYNC write */
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;
break;
case 11:
@ -1975,7 +1972,7 @@ TIMER_CALLBACK_MEMBER( antic_device::issue_dli )
{
LOG((" @cycle #%3d issue DLI\n", cycle()));
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
{
@ -2022,7 +2019,7 @@ TIMER_CALLBACK_MEMBER( antic_device::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);
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 )
{
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));
@ -2106,7 +2103,7 @@ void antic_device::LMS(int new_cmd)
**************************************************************/
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);
m_doffs = (m_doffs + 1) & DOFFS;
addr += 256 * RDANTIC(space);
@ -2131,7 +2128,7 @@ void antic_device::LMS(int new_cmd)
*****************************************************************************/
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()));
if (m_scanline == VBL_END)
m_r.nmist &= ~VBL_NMI;

View File

@ -50,7 +50,7 @@ public:
virtual void device_reset() 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_WRITE8_MEMBER( write );
@ -113,8 +113,7 @@ private:
};
const char *m_gtia_tag;
gtia_device *m_gtia;
required_device<gtia_device> m_gtia;
required_device<cpu_device> m_maincpu;
optional_ioport m_djoy_b;
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_databus_contents_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()
{
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()
{
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 )
{
int cycles = machine().device<cpu_device>("maincpu")->total_cycles() - frame_cycles;
int cycles = m_maincpu->total_cycles() - frame_cycles;
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)
{
paddle_start = machine().device<cpu_device>("maincpu")->total_cycles();
paddle_start = m_maincpu->total_cycles();
}
if ( ! ( VBLANK & 0x40 ) ) {
INPT4 = 0x80;
@ -1797,7 +1798,7 @@ WRITE8_MEMBER( tia_video_device::GRP1_w )
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;
if ( !m_read_input_port_cb.isnull() )
{

View File

@ -116,6 +116,8 @@ private:
devcb_read8 m_databus_contents_cb;
devcb_write16 m_vsync_cb;
required_device<cpu_device> m_maincpu;
struct player_gfx p0gfx;
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_gfx_interface(mconfig, *this, GFXDECODE_NAME(ygv608)),
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_vblank_handler(*this),
m_raster_handler(*this)
@ -378,7 +379,6 @@ void ygv608_device::device_start()
m_iospace = &space(AS_IO);
// TODO: tagging configuration
m_screen = downcast<screen_device *>(machine().device("screen"));
m_vblank_handler.resolve();
m_raster_handler.resolve();
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 )
{
// 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
@ -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
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
@ -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
// (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
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(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_vstart+m_crtc.display_height,0), 0, 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,
public device_gfx_interface,
public device_memory_interface
public device_memory_interface,
public device_video_interface
{
public:
// construction/destruction
@ -251,7 +252,6 @@ private:
// screen section
devcb_write_line m_vblank_handler;
devcb_write_line m_raster_handler;
screen_device *m_screen;
emu_timer *m_vblank_timer;
emu_timer *m_raster_timer;