From 5c38ca05cc5db17ebca3867e5dfb207e0fb3bfd6 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Fri, 8 Jun 2018 08:15:05 +0200 Subject: mediagx.cpp: device_finder (nw) --- src/mame/drivers/mediagx.cpp | 67 ++++++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/src/mame/drivers/mediagx.cpp b/src/mame/drivers/mediagx.cpp index bbc34609e21..54b1b18adb5 100644 --- a/src/mame/drivers/mediagx.cpp +++ b/src/mame/drivers/mediagx.cpp @@ -92,6 +92,8 @@ public: mediagx_state(const machine_config &mconfig, device_type type, const char *tag) : pcat_base_state(mconfig, type, tag), m_ide(*this, "ide"), + m_ramdac(*this, "ramdac"), + m_dmadac(*this, "dac%u", 0U), m_main_ram(*this, "main_ram"), m_cga_ram(*this, "cga_ram"), m_bios_ram(*this, "bios_ram"), @@ -106,6 +108,11 @@ public: void mediagx(machine_config &config); protected: + virtual void machine_start() override; + virtual void machine_reset() override; + virtual void video_start() override; + +private: DECLARE_READ32_MEMBER(disp_ctrl_r); DECLARE_WRITE32_MEMBER(disp_ctrl_w); DECLARE_READ32_MEMBER(memory_ctrl_r); @@ -118,10 +125,7 @@ protected: DECLARE_WRITE32_MEMBER(ad1847_w); DECLARE_READ8_MEMBER(io20_r); DECLARE_WRITE8_MEMBER(io20_w); - virtual void machine_start() override; - virtual void machine_reset() override; - virtual void video_start() override; - uint32_t screen_update_mediagx(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); DECLARE_READ32_MEMBER(speedup0_r); DECLARE_READ32_MEMBER(speedup1_r); DECLARE_READ32_MEMBER(speedup2_r); @@ -147,7 +151,6 @@ protected: void mediagx_map(address_map &map); void ramdac_map(address_map &map); -private: uint32_t cx5510_pci_r(int function, int reg, uint32_t mem_mask) { //osd_printf_debug("CX5510: PCI read %d, %02X, %08X\n", function, reg, mem_mask); @@ -166,6 +169,8 @@ private: } required_device m_ide; + required_device m_ramdac; + required_device_array m_dmadac; required_shared_ptr m_main_ram; required_shared_ptr m_cga_ram; required_shared_ptr m_bios_ram; @@ -208,8 +213,6 @@ private: uint32_t m_ad1847_sample_counter; uint32_t m_ad1847_sample_rate; - dmadac_sound_device *m_dmadac[2]; - #if SPEEDUP_HACKS const speedup_entry *m_speedup_table; uint32_t m_speedup_hits[12]; @@ -408,7 +411,7 @@ void mediagx_state::draw_cga(bitmap_rgb32 &bitmap, const rectangle &cliprect) } } -uint32_t mediagx_state::screen_update_mediagx(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +uint32_t mediagx_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { bitmap.fill(0, cliprect); @@ -460,8 +463,6 @@ WRITE32_MEMBER(mediagx_state::memory_ctrl_w) // printf("memory_ctrl_w %08X, %08X, %08X\n", data, offset*4, mem_mask); if (offset == 0x20/4) { - ramdac_device *ramdac = machine().device("ramdac"); - if((m_disp_ctrl_reg[DC_GENERAL_CFG] & 0x00e00000) == 0x00400000) { // guess: crtc params? @@ -470,7 +471,7 @@ WRITE32_MEMBER(mediagx_state::memory_ctrl_w) else if((m_disp_ctrl_reg[DC_GENERAL_CFG] & 0x00f00000) == 0x00000000) { m_pal_index = data; - ramdac->index_w( space, 0, data ); + m_ramdac->index_w( space, 0, data ); } else if((m_disp_ctrl_reg[DC_GENERAL_CFG] & 0x00f00000) == 0x00100000) { @@ -480,7 +481,7 @@ WRITE32_MEMBER(mediagx_state::memory_ctrl_w) { m_pal_index = 0; } - ramdac->pal_w( space, 0, data ); + m_ramdac->pal_w( space, 0, data ); } } else @@ -667,8 +668,8 @@ TIMER_DEVICE_CALLBACK_MEMBER(mediagx_state::sound_timer_callback) m_ad1847_sample_counter = 0; timer.adjust(attotime::from_msec(10)); - dmadac_transfer(&m_dmadac[0], 1, 0, 1, m_dacl_ptr, m_dacl.get()); - dmadac_transfer(&m_dmadac[1], 1, 0, 1, m_dacr_ptr, m_dacr.get()); + m_dmadac[0]->transfer(1, 0, 1, m_dacl_ptr, m_dacl.get()); + m_dmadac[1]->transfer(1, 0, 1, m_dacr_ptr, m_dacr.get()); m_dacl_ptr = 0; m_dacr_ptr = 0; @@ -691,7 +692,8 @@ void mediagx_state::ad1847_reg_write(int reg, uint8_t data) m_ad1847_sample_rate = 24576000 / divide_factor[(data >> 1) & 0x7]; } - dmadac_set_frequency(&m_dmadac[0], 2, m_ad1847_sample_rate); + m_dmadac[0]->set_frequency(m_ad1847_sample_rate); + m_dmadac[1]->set_frequency(m_ad1847_sample_rate); if (data & 0x20) { @@ -751,15 +753,15 @@ WRITE32_MEMBER(mediagx_state::ad1847_w) void mediagx_state::mediagx_map(address_map &map) { - map(0x00000000, 0x0009ffff).ram().share("main_ram"); + map(0x00000000, 0x0009ffff).ram().share(m_main_ram); map(0x000a0000, 0x000affff).ram(); - map(0x000b0000, 0x000b7fff).ram().share("cga_ram"); - map(0x000c0000, 0x000fffff).ram().share("bios_ram"); + map(0x000b0000, 0x000b7fff).ram().share(m_cga_ram); + map(0x000c0000, 0x000fffff).ram().share(m_bios_ram); map(0x00100000, 0x00ffffff).ram(); map(0x40008000, 0x400080ff).rw(FUNC(mediagx_state::biu_ctrl_r), FUNC(mediagx_state::biu_ctrl_w)); map(0x40008300, 0x400083ff).rw(FUNC(mediagx_state::disp_ctrl_r), FUNC(mediagx_state::disp_ctrl_w)); map(0x40008400, 0x400084ff).rw(FUNC(mediagx_state::memory_ctrl_r), FUNC(mediagx_state::memory_ctrl_w)); - map(0x40800000, 0x40bfffff).ram().share("vram"); + map(0x40800000, 0x40bfffff).ram().share(m_vram); map(0xfffc0000, 0xffffffff).rom().region("bios", 0); /* System BIOS */ } @@ -867,23 +869,22 @@ void mediagx_state::machine_reset() memcpy(m_bios_ram, rom, 0x40000); m_maincpu->reset(); - timer_device *sound_timer = machine().device("sound_timer"); + timer_device *sound_timer = subdevice("sound_timer"); sound_timer->adjust(attotime::from_msec(10)); - m_dmadac[0] = machine().device("dac1"); - m_dmadac[1] = machine().device("dac2"); - dmadac_enable(&m_dmadac[0], 2, 1); + m_dmadac[0]->enable(1); + m_dmadac[1]->enable(1); } void mediagx_state::ramdac_map(address_map &map) { - map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); + map(0x000, 0x3ff).rw(m_ramdac, FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); } MACHINE_CONFIG_START(mediagx_state::mediagx) /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", MEDIAGX, 166000000) + MCFG_DEVICE_ADD(m_maincpu, MEDIAGX, 166000000) MCFG_DEVICE_PROGRAM_MAP(mediagx_map) MCFG_DEVICE_IO_MAP(mediagx_io) MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259_1", pic8259_device, inta_cb) @@ -894,31 +895,31 @@ MACHINE_CONFIG_START(mediagx_state::mediagx) MCFG_PCI_BUS_LEGACY_DEVICE(18, DEVICE_SELF, mediagx_state, cx5510_pci_r, cx5510_pci_w) MCFG_IDE_CONTROLLER_32_ADD("ide", ata_devices, "hdd", nullptr, true) - MCFG_ATA_INTERFACE_IRQ_HANDLER(WRITELINE("pic8259_2", pic8259_device, ir6_w)) + MCFG_ATA_INTERFACE_IRQ_HANDLER(WRITELINE(m_pic8259_2, pic8259_device, ir6_w)) MCFG_TIMER_DRIVER_ADD("sound_timer", mediagx_state, sound_timer_callback) - MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette") + MCFG_RAMDAC_ADD(m_ramdac, ramdac_map, "palette") /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_ADD(m_screen, RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_SIZE(640, 480) MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 239) - MCFG_SCREEN_UPDATE_DRIVER(mediagx_state, screen_update_mediagx) + MCFG_SCREEN_UPDATE_DRIVER(mediagx_state, screen_update) - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cga) + MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_cga) - MCFG_PALETTE_ADD("palette", 256) + MCFG_PALETTE_ADD(m_palette, 256) /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - MCFG_DEVICE_ADD("dac1", DMADAC) + MCFG_DEVICE_ADD(m_dmadac[0], DMADAC) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) - MCFG_DEVICE_ADD("dac2", DMADAC) + MCFG_DEVICE_ADD(m_dmadac[1], DMADAC) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) MACHINE_CONFIG_END -- cgit v1.2.3