diff --git a/src/mame/drivers/viper.cpp b/src/mame/drivers/viper.cpp index 5a35dfa8909..36325bcb1f2 100644 --- a/src/mame/drivers/viper.cpp +++ b/src/mame/drivers/viper.cpp @@ -376,7 +376,8 @@ public: viper_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), - m_ata(*this, "ata") + m_ata(*this, "ata"), + m_voodoo(*this, "voodoo") { } @@ -429,6 +430,7 @@ public: void DS2430_w(int bit); required_device m_maincpu; required_device m_ata; + required_device m_voodoo; }; UINT32 viper_state::screen_update_viper(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) @@ -1658,41 +1660,35 @@ static void voodoo3_pci_w(device_t *busdevice, device_t *device, int function, i READ64_MEMBER(viper_state::voodoo3_io_r) { - voodoo_banshee_device *device = machine().device("voodoo"); - return read64be_with_32le_device_handler(read32_delegate(FUNC(voodoo_banshee_device::banshee_io_r), device), space, offset, mem_mask); + return read64be_with_32le_device_handler(read32_delegate(FUNC(voodoo_3_device::banshee_io_r), &(*m_voodoo)), space, offset, mem_mask); } WRITE64_MEMBER(viper_state::voodoo3_io_w) { // printf("voodoo3_io_w: %08X%08X, %08X at %08X\n", (UINT32)(data >> 32), (UINT32)(data), offset, space.device().safe_pc()); - voodoo_banshee_device *device = machine().device("voodoo"); - write64be_with_32le_device_handler(write32_delegate(FUNC(voodoo_banshee_device::banshee_io_w), device), space, offset, data, mem_mask); + write64be_with_32le_device_handler(write32_delegate(FUNC(voodoo_3_device::banshee_io_w), &(*m_voodoo)), space, offset, data, mem_mask); } READ64_MEMBER(viper_state::voodoo3_r) { - voodoo_banshee_device *device = machine().device("voodoo"); - return read64be_with_32le_device_handler(read32_delegate(FUNC(voodoo_banshee_device::banshee_r), device), space, offset, mem_mask); + return read64be_with_32le_device_handler(read32_delegate(FUNC(voodoo_3_device::banshee_r), &(*m_voodoo)), space, offset, mem_mask); } WRITE64_MEMBER(viper_state::voodoo3_w) { // printf("voodoo3_w: %08X%08X, %08X at %08X\n", (UINT32)(data >> 32), (UINT32)(data), offset, space.device().safe_pc()); - voodoo_banshee_device *device = machine().device("voodoo"); - write64be_with_32le_device_handler(write32_delegate(FUNC(voodoo_banshee_device::banshee_w), device), space, offset, data, mem_mask); + write64be_with_32le_device_handler(write32_delegate(FUNC(voodoo_3_device::banshee_w), &(*m_voodoo)), space, offset, data, mem_mask); } READ64_MEMBER(viper_state::voodoo3_lfb_r) { - voodoo_banshee_device *device = machine().device("voodoo"); - return read64be_with_32le_device_handler(read32_delegate(FUNC(voodoo_banshee_device::banshee_fb_r), device), space, offset, mem_mask); + return read64be_with_32le_device_handler(read32_delegate(FUNC(voodoo_3_device::banshee_fb_r), &(*m_voodoo)), space, offset, mem_mask); } WRITE64_MEMBER(viper_state::voodoo3_lfb_w) { // printf("voodoo3_lfb_w: %08X%08X, %08X at %08X\n", (UINT32)(data >> 32), (UINT32)(data), offset, space.device().safe_pc()); - voodoo_banshee_device *device = machine().device("voodoo"); - write64be_with_32le_device_handler(write32_delegate(FUNC(voodoo_banshee_device::banshee_fb_w), device), space, offset, data, mem_mask); + write64be_with_32le_device_handler(write32_delegate(FUNC(voodoo_3_device::banshee_fb_w), &(*m_voodoo)), space, offset, data, mem_mask); }