diff options
Diffstat (limited to 'src/mame/drivers/vis.cpp')
-rw-r--r-- | src/mame/drivers/vis.cpp | 99 |
1 files changed, 55 insertions, 44 deletions
diff --git a/src/mame/drivers/vis.cpp b/src/mame/drivers/vis.cpp index caa61fa09a7..8ef1fcff403 100644 --- a/src/mame/drivers/vis.cpp +++ b/src/mame/drivers/vis.cpp @@ -28,8 +28,8 @@ protected: virtual void dack16_w(int line, uint16_t data) override; virtual void device_add_mconfig(machine_config &config) override; private: - required_device<dac_word_interface> m_rdac; - required_device<dac_word_interface> m_ldac; + required_device<dac_16bit_r2r_device> m_rdac; + required_device<dac_16bit_r2r_device> m_ldac; uint16_t m_count; uint16_t m_curcount; uint16_t m_sample[2]; @@ -126,20 +126,29 @@ void vis_audio_device::device_timer(emu_timer &timer, device_timer_id id, int pa } } -MACHINE_CONFIG_START(vis_audio_device::device_add_mconfig) +void vis_audio_device::device_add_mconfig(machine_config &config) +{ SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - MCFG_DEVICE_ADD("ymf262", YMF262, XTAL(14'318'181)) - MCFG_SOUND_ROUTE(0, "lspeaker", 1.00) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.00) - MCFG_SOUND_ROUTE(2, "lspeaker", 1.00) - MCFG_SOUND_ROUTE(3, "rspeaker", 1.00) - MCFG_DEVICE_ADD("ldac", DAC_16BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) // sanyo lc7883k - MCFG_DEVICE_ADD("rdac", DAC_16BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) // sanyo lc7883k - MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) - MCFG_SOUND_ROUTE(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "ldac", -1.0, DAC_VREF_NEG_INPUT) - MCFG_SOUND_ROUTE(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "rdac", -1.0, DAC_VREF_NEG_INPUT) -MACHINE_CONFIG_END + + ymf262_device &ymf262(YMF262(config, "ymf262", XTAL(14'318'181))); + ymf262.add_route(0, "lspeaker", 1.00); + ymf262.add_route(1, "rspeaker", 1.00); + ymf262.add_route(2, "lspeaker", 1.00); + ymf262.add_route(3, "rspeaker", 1.00); + + DAC_16BIT_R2R(config, m_ldac, 0); + DAC_16BIT_R2R(config, m_rdac, 0); + m_ldac->add_route(ALL_OUTPUTS, "lspeaker", 1.0); // sanyo lc7883k + m_rdac->add_route(ALL_OUTPUTS, "rspeaker", 1.0); // sanyo lc7883k + + voltage_regulator_device &vreg(VOLTAGE_REGULATOR(config, "vref")); + vreg.set_output(5.0); + vreg.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT); + vreg.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT); + vreg.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT); + vreg.add_route(0, "rdac", -1.0, DAC_VREF_NEG_INPUT); +} READ8_MEMBER(vis_audio_device::pcm_r) { @@ -258,11 +267,12 @@ vis_vga_device::vis_vga_device(const machine_config &mconfig, const char *tag, d set_screen(*this, "screen"); } -MACHINE_CONFIG_START(vis_vga_device::device_add_mconfig) - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(XTAL(25'174'800),900,0,640,526,0,480) - MCFG_SCREEN_UPDATE_DEVICE(DEVICE_SELF, vis_vga_device, screen_update) -MACHINE_CONFIG_END +void vis_vga_device::device_add_mconfig(machine_config &config) +{ + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_raw(XTAL(25'174'800), 900, 0, 640, 526, 0, 480); + screen.set_screen_update(FUNC(vis_vga_device::screen_update)); +} void vis_vga_device::recompute_params() { @@ -720,8 +730,8 @@ private: DECLARE_WRITE16_MEMBER(pad_w); DECLARE_READ8_MEMBER(unk1_r); DECLARE_WRITE8_MEMBER(unk1_w); - void at16_io(address_map &map); - void at16_map(address_map &map); + void io_map(address_map &map); + void main_map(address_map &map); void machine_reset() override; @@ -834,7 +844,7 @@ WRITE8_MEMBER(vis_state::sysctl_w) m_sysctl = data; } -void vis_state::at16_map(address_map &map) +void vis_state::main_map(address_map &map) { map.unmap_value_high(); map(0x000000, 0x09ffff).ram(); @@ -844,7 +854,7 @@ void vis_state::at16_map(address_map &map) map(0xff0000, 0xffffff).rom().region("bios", 0xf0000); } -void vis_state::at16_io(address_map &map) +void vis_state::io_map(address_map &map) { map.unmap_value_high(); map(0x0000, 0x001f).rw("mb:dma8237_1", FUNC(am9517a_device::read), FUNC(am9517a_device::write)); @@ -890,30 +900,31 @@ static INPUT_PORTS_START(vis) PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, vis_state, update, 0) INPUT_PORTS_END -MACHINE_CONFIG_START(vis_state::vis) +void vis_state::vis(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", I80286, XTAL(12'000'000) ) - MCFG_DEVICE_PROGRAM_MAP(at16_map) - MCFG_DEVICE_IO_MAP(at16_io) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259_master", pic8259_device, inta_cb) - MCFG_80286_SHUTDOWN(WRITELINE("mb", at_mb_device, shutdown)) - - MCFG_DEVICE_ADD("mb", AT_MB, 0) - // this doesn't have a real keyboard controller - MCFG_DEVICE_REMOVE("mb:keybc") - MCFG_DEVICE_REMOVE("mb:pc_kbdc") - - MCFG_DEVICE_ADD("kbdc", KBDC8042, 0) - MCFG_KBDC8042_KEYBOARD_TYPE(KBDC8042_AT386) - MCFG_KBDC8042_SYSTEM_RESET_CB(INPUTLINE("maincpu", INPUT_LINE_RESET)) - MCFG_KBDC8042_GATE_A20_CB(INPUTLINE("maincpu", INPUT_LINE_A20)) - MCFG_KBDC8042_INPUT_BUFFER_FULL_CB(WRITELINE("mb:pic8259_master", pic8259_device, ir1_w)) + i80286_cpu_device &maincpu(I80286(config, "maincpu", XTAL(12'000'000))); + maincpu.set_addrmap(AS_PROGRAM, &vis_state::main_map); + maincpu.set_addrmap(AS_IO, &vis_state::io_map); + maincpu.shutdown_callback().set("mb", FUNC(at_mb_device::shutdown)); + maincpu.set_irq_acknowledge_callback("mb:pic8259_master", FUNC(pic8259_device::inta_cb)); + + AT_MB(config, "mb", 0); + // the vis doesn't have a real keyboard controller + config.device_remove("mb:keybc"); + config.device_remove("mb:pc_kbdc"); + + kbdc8042_device &kbdc(KBDC8042(config, "kbdc")); + kbdc.set_keyboard_type(kbdc8042_device::KBDC8042_AT386); + kbdc.system_reset_callback().set_inputline("maincpu", INPUT_LINE_RESET); + kbdc.gate_a20_callback().set_inputline("maincpu", INPUT_LINE_A20); + kbdc.input_buffer_full_callback().set("mb:pic8259_master", FUNC(pic8259_device::ir1_w)); // FIXME: determine ISA bus clock - MCFG_DEVICE_ADD("mcd", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, "mcd", true) - MCFG_DEVICE_ADD("visaudio", ISA16_SLOT, 0, "mb:isabus", vis_cards, "visaudio", true) - MCFG_DEVICE_ADD("visvga", ISA16_SLOT, 0, "mb:isabus", vis_cards, "visvga", true) -MACHINE_CONFIG_END + ISA16_SLOT(config, "mcd", 0, "mb:isabus", pc_isa16_cards, "mcd", true); + ISA16_SLOT(config, "visaudio", 0, "mb:isabus", vis_cards, "visaudio", true); + ISA16_SLOT(config, "visvga", 0, "mb:isabus", vis_cards, "visvga", true); +} ROM_START(vis) ROM_REGION(0x100000,"bios", 0) |