diff options
Diffstat (limited to 'src/mame/drivers/cobra.cpp')
-rw-r--r-- | src/mame/drivers/cobra.cpp | 48 |
1 files changed, 22 insertions, 26 deletions
diff --git a/src/mame/drivers/cobra.cpp b/src/mame/drivers/cobra.cpp index 761d5eb8b63..8e924473206 100644 --- a/src/mame/drivers/cobra.cpp +++ b/src/mame/drivers/cobra.cpp @@ -703,6 +703,9 @@ public: m_ata(*this, "ata"), m_screen(*this, "screen"), m_palette(*this, "palette"), + m_legacy_pci(*this, "pcibus"), + m_jvs_host(*this, "cobra_jvs_host"), + m_dmadac(*this, "dac%u", 1U), m_generic_paletteram_32(*this, "paletteram"), m_main_ram(*this, "main_ram"), m_sub_ram(*this, "sub_ram"), @@ -722,6 +725,9 @@ public: required_device<ata_interface_device> m_ata; required_device<screen_device> m_screen; required_device<palette_device> m_palette; + required_device<pci_bus_legacy_device> m_legacy_pci; + required_device<cobra_jvs_host> m_jvs_host; + required_device_array<dmadac_sound_device, 2> m_dmadac; required_shared_ptr<uint32_t> m_generic_paletteram_32; required_shared_ptr<uint64_t> m_main_ram; required_shared_ptr<uint32_t> m_sub_ram; @@ -830,8 +836,6 @@ public: std::unique_ptr<int16_t[]> m_sound_dma_buffer_r; uint32_t m_sound_dma_ptr; - dmadac_sound_device *m_dmadac[2]; - void init_racjamdx(); void init_bujutsu(); void init_cobra(); @@ -1404,16 +1408,12 @@ void cobra_state::mpc106_pci_w(int function, int reg, uint32_t data, uint32_t me READ64_MEMBER(cobra_state::main_mpc106_r) { - pci_bus_legacy_device *device = machine().device<pci_bus_legacy_device>("pcibus"); - //return pci_64be_r(offset, mem_mask); - return device->read_64be(space, offset, mem_mask); + return m_legacy_pci->read_64be(space, offset, mem_mask); } WRITE64_MEMBER(cobra_state::main_mpc106_w) { - pci_bus_legacy_device *device = machine().device<pci_bus_legacy_device>("pcibus"); - //pci_64be_w(offset, data, mem_mask); - device->write_64be(space, offset, data, mem_mask); + m_legacy_pci->write_64be(space, offset, data, mem_mask); } READ64_MEMBER(cobra_state::main_fifo_r) @@ -2002,15 +2002,13 @@ WRITE32_MEMBER(cobra_state::sub_sound_dma_w) { m_sound_dma_ptr = 0; - dmadac_transfer(&m_dmadac[0], 1, 0, 1, DMA_SOUND_BUFFER_SIZE, m_sound_dma_buffer_l.get()); - dmadac_transfer(&m_dmadac[1], 1, 0, 1, DMA_SOUND_BUFFER_SIZE, m_sound_dma_buffer_r.get()); + m_dmadac[0]->transfer(0, 0, 1, DMA_SOUND_BUFFER_SIZE, m_sound_dma_buffer_l.get()); + m_dmadac[1]->transfer(0, 0, 1, DMA_SOUND_BUFFER_SIZE, m_sound_dma_buffer_r.get()); } } WRITE8_MEMBER(cobra_state::sub_jvs_w) { - cobra_jvs_host *jvs = machine().device<cobra_jvs_host>("cobra_jvs_host"); - #if LOG_JVS printf("sub_jvs_w: %02X\n", data); #endif @@ -2018,7 +2016,7 @@ WRITE8_MEMBER(cobra_state::sub_jvs_w) const uint8_t *rec_data; uint32_t rec_size; - jvs->write(data, rec_data, rec_size); + m_jvs_host->write(data, rec_data, rec_size); if (rec_size > 0) { @@ -3274,12 +3272,10 @@ void cobra_state::machine_reset() m_sound_dma_ptr = 0; - m_dmadac[0] = machine().device<dmadac_sound_device>("dac1"); - m_dmadac[1] = machine().device<dmadac_sound_device>("dac2"); - dmadac_enable(&m_dmadac[0], 1, 1); - dmadac_enable(&m_dmadac[1], 1, 1); - dmadac_set_frequency(&m_dmadac[0], 1, 44100); - dmadac_set_frequency(&m_dmadac[1], 1, 44100); + m_dmadac[0]->enable(1); + m_dmadac[1]->enable(1); + m_dmadac[0]->set_frequency(44100); + m_dmadac[1]->set_frequency(44100); } MACHINE_CONFIG_START(cobra_state::cobra) @@ -3300,7 +3296,7 @@ MACHINE_CONFIG_START(cobra_state::cobra) MCFG_QUANTUM_TIME(attotime::from_hz(15005)) - MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0) + MCFG_PCI_BUS_LEGACY_ADD(m_legacy_pci, 0) MCFG_PCI_BUS_LEGACY_DEVICE(0, DEVICE_SELF, cobra_state, mpc106_pci_r, mpc106_pci_w) MCFG_ATA_INTERFACE_ADD("ata", ata_devices, "hdd", nullptr, true) @@ -3322,10 +3318,10 @@ MACHINE_CONFIG_START(cobra_state::cobra) MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) - 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) MCFG_DEVICE_ADD("m48t58", M48T58, 0) @@ -3337,12 +3333,12 @@ MACHINE_CONFIG_START(cobra_state::cobra) MCFG_K001604_ROZ_OFFSET(0) // correct? MCFG_K001604_PALETTE("palette") - MCFG_DEVICE_ADD("cobra_jvs_host", COBRA_JVS_HOST, 4000000) - MCFG_JVS_DEVICE_ADD("cobra_jvs1", COBRA_JVS, "cobra_jvs_host") + MCFG_DEVICE_ADD(m_jvs_host, COBRA_JVS_HOST, 4000000) + MCFG_JVS_DEVICE_ADD(m_jvs1, COBRA_JVS, "cobra_jvs_host") cobra_jvs::static_set_main_board(*device, true); - MCFG_JVS_DEVICE_ADD("cobra_jvs2", COBRA_JVS, "cobra_jvs_host") + MCFG_JVS_DEVICE_ADD(m_jvs2, COBRA_JVS, "cobra_jvs_host") cobra_jvs::static_set_main_board(*device, true); - MCFG_JVS_DEVICE_ADD("cobra_jvs3", COBRA_JVS, "cobra_jvs_host") + MCFG_JVS_DEVICE_ADD(m_jvs3, COBRA_JVS, "cobra_jvs_host") cobra_jvs::static_set_main_board(*device, true); MACHINE_CONFIG_END |