本文整理汇总了C++中required_device::add_route方法的典型用法代码示例。如果您正苦于以下问题:C++ required_device::add_route方法的具体用法?C++ required_device::add_route怎么用?C++ required_device::add_route使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类required_device
的用法示例。
在下文中一共展示了required_device::add_route方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: jolypark
void spinb_state::jolypark(machine_config &config)
{
spinb(config);
MSM6585(config.replace(), m_msm_a, XTAL(640'000));
m_msm_a->vck_callback().set("ic5a", FUNC(ttl7474_device::clock_w));
m_msm_a->set_prescaler_selector(msm6585_device::S40);
m_msm_a->add_route(ALL_OUTPUTS, "msmavol", 1.0);
MSM6585(config.replace(), m_msm_m, XTAL(640'000));
m_msm_m->vck_callback().set("ic5m", FUNC(ttl7474_device::clock_w));
m_msm_m->set_prescaler_selector(msm6585_device::S40);
m_msm_m->add_route(ALL_OUTPUTS, "msmmvol", 1.0);
}
示例2: FUNC
INPUT_PORTS_END
void spool99_state::spool99(machine_config &config)
{
Z80(config, m_maincpu, 24000000/8);
m_maincpu->set_addrmap(AS_PROGRAM, &spool99_state::spool99_map);
m_maincpu->set_vblank_int("screen", FUNC(spool99_state::irq0_line_hold));
GFXDECODE(config, m_gfxdecode, "palette", gfx_spool99);
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(64*8, 32*8);
screen.set_visarea(7*8, 55*8-1, 1*8, 31*8-1); //384x240,raw guess
screen.set_screen_update(FUNC(spool99_state::screen_update));
screen.set_palette("palette");
PALETTE(config, "palette").set_format(palette_device::xBGR_444, 0x200);
EEPROM_93C46_16BIT(config, "eeprom");
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
OKIM6295(config, m_oki, 1000000, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
m_oki->add_route(ALL_OUTPUTS, "lspeaker", 0.47);
m_oki->add_route(ALL_OUTPUTS, "rspeaker", 0.47);
}
示例3: idsa
void idsa_state::idsa(machine_config &config)
{
/* basic machine hardware */
Z80(config, m_maincpu, XTAL(8'000'000) / 2);
m_maincpu->set_addrmap(AS_PROGRAM, &idsa_state::maincpu_map);
m_maincpu->set_addrmap(AS_IO, &idsa_state::maincpu_io_map);
clock_device &irqclock(CLOCK(config, "irqclock", XTAL(8'000'000) / 4));
irqclock.signal_handler().set(FUNC(idsa_state::clock_w));
/* video hardware */
//config.set_default_layout()
/* sound hardware */
genpin_audio(config);
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
SP0256(config, m_speech, 3120000); // unknown variant
m_speech->add_route(ALL_OUTPUTS, "lspeaker", 1.5);
ay8910_device &aysnd1(AY8910(config, "aysnd1", 2000000)); // 2Mhz according to pinmame, schematic omits the clock line
aysnd1.port_a_write_callback().set(FUNC(idsa_state::ay1_a_w));
aysnd1.port_b_write_callback().set(FUNC(idsa_state::ay1_b_w));
aysnd1.add_route(ALL_OUTPUTS, "lspeaker", 0.75);
ay8910_device &aysnd2(AY8910(config, "aysnd2", 2000000));
aysnd2.port_a_write_callback().set(FUNC(idsa_state::ay2_a_w));
aysnd2.port_b_write_callback().set(FUNC(idsa_state::ay2_b_w));
aysnd2.add_route(ALL_OUTPUTS, "rspeaker", 0.75);
}
示例4: XTAL
void konmedal68k_state::kzaurus(machine_config &config)
{
/* basic machine hardware */
M68000(config, m_maincpu, XTAL(33'868'800)/4); // 33.8688 MHz crystal verified on PCB
m_maincpu->set_addrmap(AS_PROGRAM, &konmedal68k_state::kzaurus_main);
TIMER(config, "scantimer").configure_scanline(FUNC(konmedal68k_state::scanline), "screen", 0, 1);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(59.62); /* verified on pcb */
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(64*8, 32*8);
screen.set_visarea(40, 400-1, 16, 240-1);
screen.set_screen_update(FUNC(konmedal68k_state::screen_update_konmedal68k));
screen.set_palette("palette");
PALETTE(config, "palette").set_format(palette_device::xBGR_888, 8192).enable_shadows();
K056832(config, m_k056832, 0);
m_k056832->set_tile_callback(FUNC(konmedal68k_state::tile_callback), this);
m_k056832->set_config("gfx1", K056832_BPP_4dj, 1, 0);
m_k056832->set_palette(m_palette);
K055555(config, m_k055555, 0);
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
YMZ280B(config, m_ymz, XTAL(33'868'800)/2); // 33.8688 MHz xtal verified on PCB
m_ymz->add_route(0, "lspeaker", 1.0);
m_ymz->add_route(1, "rspeaker", 1.0);
}
示例5: wrlshunt
INPUT_PORTS_END
/************************************
*
* Machine Configs
*
************************************/
void wrlshunt_state::wrlshunt(machine_config &config)
{
UNSP12(config, m_maincpu, XTAL(27'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &wrlshunt_state::mem_map);
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60);
m_screen->set_size(320, 262);
m_screen->set_visarea(0, 320-1, 0, 240-1);
m_screen->set_screen_update("spg", FUNC(spg_wh_device::screen_update));
m_screen->screen_vblank().set(m_spg, FUNC(spg_wh_device::vblank));
SPG_WH(config, m_spg, XTAL(27'000'000), m_maincpu, m_screen);
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
m_spg->add_route(ALL_OUTPUTS, "lspeaker", 0.5);
m_spg->add_route(ALL_OUTPUTS, "rspeaker", 0.5);
}
示例6: gamate
void gamate_state::gamate(machine_config &config)
{
M6502(config, m_maincpu, 4433000/2); // NCR 65CX02
m_maincpu->set_addrmap(AS_PROGRAM, &gamate_state::gamate_mem);
GAMATE_VIDEO(config, "video", 0);
/* sound hardware */
SPEAKER(config, "lspeaker").front_left(); // Stereo headphone output
SPEAKER(config, "rspeaker").front_right();
AY8910(config, m_ay, 4433000 / 4); // AY compatible, no actual AY chip present
m_ay->add_route(0, "lspeaker", 0.5);
m_ay->add_route(1, "rspeaker", 0.5);
m_ay->add_route(2, "lspeaker", 0.25);
m_ay->add_route(2, "rspeaker", 0.25);
GAMATE_CART_SLOT(config, m_cartslot, gamate_cart, nullptr);
SOFTWARE_LIST(config, "cart_list").set_original("gamate");
}
示例7: aftrshok
void aftrshok_state::aftrshok(machine_config &config)
{
/* basic machine hardware */
I8031(config, m_maincpu, 12_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &aftrshok_state::prog_map);
m_maincpu->set_addrmap(AS_IO, &aftrshok_state::ext_map);
m_maincpu->port_out_cb<3>().set(FUNC(aftrshok_state::mcu_p3_w));
/* sound hardware */
SPEAKER(config, "mono").front_center();
OKIM6295(config, m_oki, 2.097152_MHz_XTAL, okim6295_device::PIN7_HIGH);
m_oki->add_route(ALL_OUTPUTS, "mono", 1.0);
}
示例8: ts
void esqkt_state::ts(machine_config &config)
{
M68000(config, m_maincpu, 16_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &esqkt_state::ts_map);
ES5510(config, m_esp, 10_MHz_XTAL);
m_esp->set_disable();
auto &panel(ESQPANEL2X40_VFX(config, "sq1panel"));
panel.write_tx().set(m_duart, FUNC(scn2681_device::rx_b_w));
SCN2681(config, m_duart, 4000000);
m_duart->irq_cb().set(FUNC(esqkt_state::duart_irq_handler));
m_duart->a_tx_cb().set(FUNC(esqkt_state::duart_tx_a));
m_duart->b_tx_cb().set(FUNC(esqkt_state::duart_tx_b));
m_duart->outport_cb().set(FUNC(esqkt_state::duart_output));
m_duart->set_clocks(500000, 500000, 1000000, 1000000);
auto &mdin(MIDI_PORT(config, "mdin"));
midiin_slot(mdin);
mdin.rxd_handler().set(m_duart, FUNC(scn2681_device::rx_a_w)); // route MIDI Tx send directly to 68681 channel A Rx
midiout_slot(MIDI_PORT(config, "mdout"));
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
ESQ_5505_5510_PUMP(config, m_pump, 16_MHz_XTAL / (16 * 32));
m_pump->set_esp(m_esp);
m_pump->add_route(0, "lspeaker", 1.0);
m_pump->add_route(1, "rspeaker", 1.0);
auto &es5506a(ES5506(config, "ensoniq", 16_MHz_XTAL));
es5506a.sample_rate_changed().set(FUNC(esqkt_state::es5506_clock_changed));
es5506a.set_region0("waverom"); /* Bank 0 */
es5506a.set_region1("waverom2"); /* Bank 1 */
es5506a.set_region2("waverom3"); /* Bank 0 */
es5506a.set_region3("waverom4"); /* Bank 1 */
es5506a.set_channels(4); /* channels */
es5506a.irq_cb().set(FUNC(esqkt_state::esq5506_otto_irq)); /* irq */
es5506a.read_port_cb().set(FUNC(esqkt_state::esq5506_read_adc)); /* ADC */
es5506a.add_route(0, "pump", 1.0, 0);
es5506a.add_route(1, "pump", 1.0, 1);
es5506a.add_route(2, "pump", 1.0, 2);
es5506a.add_route(3, "pump", 1.0, 3);
es5506a.add_route(4, "pump", 1.0, 4);
es5506a.add_route(5, "pump", 1.0, 5);
es5506a.add_route(6, "pump", 1.0, 6);
es5506a.add_route(7, "pump", 1.0, 7);
}
示例9: mephisto
void mephisto_pinball_state::mephisto(machine_config &config)
{
/* basic machine hardware */
I8088(config, m_maincpu, XTAL(18'000'000)/3);
m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_pinball_state::mephisto_map);
//m_maincpu->set_irq_acknowledge_callback("muart", FUNC(i8256_device::inta_cb));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
//i8256_device &muart(I8256(config, "muart", XTAL(18'000'000)/3));
//muart.irq_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
//muart.txd_handler().set_inputline("audiocpu", MCS51_RX_LINE);
I8155(config, "ic20", XTAL(18'000'000)/6);
//i8155_device &i8155_1(I8155(config, "ic20", XTAL(18'000'000)/6));
//i8155_1.out_to_callback().set("muart", FUNC(i8256_device::write_txc));
I8155(config, "ic9", XTAL(18'000'000)/6);
//i8155_device &i8155_2(I8155(config, "ic9", XTAL(18'000'000)/6));
//i8155_2.out_to_callback().set(FUNC(mephisto_pinball_state::clk_shift_w));
i8051_device &soundcpu(I8051(config, "soundcpu", XTAL(12'000'000)));
soundcpu.set_addrmap(AS_PROGRAM, &mephisto_pinball_state::mephisto_8051_map); // EA tied high for external program ROM
soundcpu.set_addrmap(AS_IO, &mephisto_pinball_state::mephisto_8051_io);
soundcpu.port_in_cb<1>().set(FUNC(mephisto_pinball_state::ay8910_read));
soundcpu.port_out_cb<1>().set(FUNC(mephisto_pinball_state::ay8910_write));
soundcpu.port_out_cb<3>().set(FUNC(mephisto_pinball_state::t0_t1_w));
soundcpu.serial_rx_cb().set_constant(0); // from MUART
SPEAKER(config, "mono").front_center();
AY8910(config, m_aysnd, XTAL(12'000'000)/8);
m_aysnd->port_a_write_callback().set(FUNC(mephisto_pinball_state::ay8910_columns_w));
m_aysnd->port_b_read_callback().set(FUNC(mephisto_pinball_state::ay8910_inputs_r));
m_aysnd->add_route(ALL_OUTPUTS, "mono", 0.5);
DAC08(config, "dac", 0).add_route(ALL_OUTPUTS, "mono", 0.5);
voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref"));
vref.set_output(5.0);
vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT);
vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT);
}
示例10: famibox
void famibox_state::famibox(machine_config &config)
{
/* basic machine hardware */
N2A03(config, m_maincpu, NTSC_APU_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &famibox_state::famibox_map);
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);
screen.set_size(32*8, 262);
screen.set_visarea(0*8, 32*8-1, 0*8, 30*8-1);
screen.set_screen_update("ppu", FUNC(ppu2c0x_device::screen_update));
PPU_2C02(config, m_ppu);
m_ppu->set_cpu_tag(m_maincpu);
m_ppu->int_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
/* sound hardware */
SPEAKER(config, "mono").front_center();
m_maincpu->add_route(ALL_OUTPUTS, "mono", 0.50);
}
示例11: FUNC
void trs80dt1_state::trs80dt1(machine_config &config)
{
/* basic machine hardware */
I8051(config, m_maincpu, 7372800);
m_maincpu->set_addrmap(AS_PROGRAM, &trs80dt1_state::prg_map);
m_maincpu->set_addrmap(AS_IO, &trs80dt1_state::io_map);
m_maincpu->port_out_cb<1>().set(FUNC(trs80dt1_state::port1_w));
m_maincpu->port_out_cb<3>().set(FUNC(trs80dt1_state::port3_w));
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_screen_update("crtc", FUNC(i8276_device::screen_update));
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
screen.set_size(40*12, 16*16);
screen.set_visarea(0, 40*12-1, 0, 16*16-1);
GFXDECODE(config, "gfxdecode", m_palette, gfx_trs80dt1);
I8276(config, m_crtc, 12480000 / 8);
m_crtc->set_character_width(8);
m_crtc->set_display_callback(FUNC(trs80dt1_state::crtc_update_row), this);
m_crtc->drq_wr_callback().set_inputline(m_maincpu, MCS51_INT0_LINE); // BRDY pin goes through inverter to /INT0, so we don't invert
m_crtc->irq_wr_callback().set(m_7474, FUNC(ttl7474_device::clear_w)); // INT pin
m_crtc->irq_wr_callback().append(m_7474, FUNC(ttl7474_device::d_w));
m_crtc->vrtc_wr_callback().set(m_7474, FUNC(ttl7474_device::clock_w));
m_crtc->set_screen("screen");
PALETTE(config, "palette").set_entries(3);
X2210(config, "nvram");
TTL7474(config, m_7474, 0);
m_7474->comp_output_cb().set_inputline(m_maincpu, MCS51_INT1_LINE).invert(); // /Q connects directly to /INT1, so we need to invert?
/* sound hardware */
SPEAKER(config, "mono").front_center();
BEEP(config, m_beep, 2000);
m_beep->add_route(ALL_OUTPUTS, "mono", 0.50);
}
示例12: mmagic
void mmagic_state::mmagic(machine_config &config)
{
// basic machine hardware
I8085A(config, m_maincpu, 6.144_MHz_XTAL); // NEC D8085A
m_maincpu->set_addrmap(AS_PROGRAM, &mmagic_state::mmagic_mem);
m_maincpu->set_addrmap(AS_IO, &mmagic_state::mmagic_io);
// video hardware
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_raw(6.144_MHz_XTAL, 384, 0, 256, 264, 0, 192);
m_screen->set_screen_update(FUNC(mmagic_state::screen_update));
PALETTE(config, m_palette, palette_device::RGB_3BIT);
// sound hardware
SPEAKER(config, "mono").front_center();
SAMPLES(config, m_samples);
m_samples->set_channels(1);
m_samples->set_samples_names(mmagic_sample_names);
m_samples->add_route(ALL_OUTPUTS, "mono", 0.5);
// TODO: replace samples with SN76477 + discrete sound
}
示例13: clickstart
INPUT_PORTS_END
// There is a SEEPROM on the motherboard (type?)
void clickstart_state::clickstart(machine_config &config)
{
UNSP(config, m_maincpu, XTAL(27'000'000));
m_maincpu->set_addrmap(AS_PROGRAM, &clickstart_state::mem_map);
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60);
m_screen->set_size(320, 262);
m_screen->set_visarea(0, 320-1, 0, 240-1);
m_screen->set_screen_update("spg", FUNC(spg2xx_device::screen_update));
m_screen->screen_vblank().set(m_spg, FUNC(spg2xx_device::vblank));
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
SPG28X(config, m_spg, XTAL(27'000'000), m_maincpu, m_screen);
m_spg->porta_out().set(FUNC(clickstart_state::porta_w));
m_spg->portb_out().set(FUNC(clickstart_state::portb_w));
m_spg->portc_out().set(FUNC(clickstart_state::portc_w));
m_spg->porta_in().set(FUNC(clickstart_state::porta_r));
m_spg->portb_in().set(FUNC(clickstart_state::portb_r));
m_spg->portc_in().set(FUNC(clickstart_state::portc_r));
m_spg->adc_in<0>().set_constant(0x0fff);
m_spg->chip_select().set(FUNC(clickstart_state::chip_sel_w));
m_spg->add_route(ALL_OUTPUTS, "lspeaker", 0.5);
m_spg->add_route(ALL_OUTPUTS, "rspeaker", 0.5);
GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "clickstart_cart");
m_cart->set_width(GENERIC_ROM16_WIDTH);
m_cart->set_device_load(device_image_load_delegate(&clickstart_state::device_image_load_cart, this));
SOFTWARE_LIST(config, "cart_list").set_original("clickstart_cart");
}
示例14: bg_motherboard
void bitgraph_state::bg_motherboard(machine_config &config)
{
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(40);
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
m_screen->set_size(1024, 768);
m_screen->set_visarea_full();
m_screen->set_screen_update(FUNC(bitgraph_state::screen_update));
m_screen->set_palette("palette");
PALETTE(config, "palette", palette_device::MONOCHROME);
ACIA6850(config, m_acia0, 0);
m_acia0->txd_handler().set(RS232_H_TAG, FUNC(rs232_port_device::write_txd));
m_acia0->rts_handler().set(RS232_H_TAG, FUNC(rs232_port_device::write_rts));
m_acia0->irq_handler().set_inputline(m_maincpu, M68K_IRQ_1);
rs232_port_device &rs232h(RS232_PORT(config, RS232_H_TAG, default_rs232_devices, "null_modem"));
rs232h.rxd_handler().set(m_acia0, FUNC(acia6850_device::write_rxd));
rs232h.dcd_handler().set(m_acia0, FUNC(acia6850_device::write_dcd));
rs232h.cts_handler().set(m_acia0, FUNC(acia6850_device::write_cts));
ACIA6850(config, m_acia1, 0);
m_acia1->txd_handler().set(RS232_K_TAG, FUNC(rs232_port_device::write_txd));
m_acia1->rts_handler().set(RS232_K_TAG, FUNC(rs232_port_device::write_rts));
m_acia1->irq_handler().set_inputline(m_maincpu, M68K_IRQ_1);
rs232_port_device &rs232k(RS232_PORT(config, RS232_K_TAG, default_rs232_devices, "keyboard"));
rs232k.rxd_handler().set(m_acia1, FUNC(acia6850_device::write_rxd));
rs232k.dcd_handler().set(m_acia1, FUNC(acia6850_device::write_dcd));
rs232k.cts_handler().set(m_acia1, FUNC(acia6850_device::write_cts));
rs232k.set_option_device_input_defaults("keyboard", DEVICE_INPUT_DEFAULTS_NAME(kbd_rs232_defaults));
ACIA6850(config, m_acia2, 0);
m_acia2->txd_handler().set(RS232_D_TAG, FUNC(rs232_port_device::write_txd));
m_acia2->rts_handler().set(RS232_D_TAG, FUNC(rs232_port_device::write_rts));
m_acia2->irq_handler().set_inputline(m_maincpu, M68K_IRQ_1);
rs232_port_device &rs232d(RS232_PORT(config, RS232_D_TAG, default_rs232_devices, nullptr));
rs232d.rxd_handler().set(m_acia2, FUNC(acia6850_device::write_rxd));
rs232d.dcd_handler().set(m_acia2, FUNC(acia6850_device::write_dcd));
rs232d.cts_handler().set(m_acia2, FUNC(acia6850_device::write_cts));
// XXX actual part may be something else
COM8116(config, m_dbrga, 5.0688_MHz_XTAL);
m_dbrga->fr_handler().set(FUNC(bitgraph_state::com8116_a_fr_w));
m_dbrga->ft_handler().set(FUNC(bitgraph_state::com8116_a_ft_w));
COM8116(config, m_dbrgb, 5.0688_MHz_XTAL);
m_dbrgb->fr_handler().set(FUNC(bitgraph_state::com8116_b_fr_w));
m_dbrgb->ft_handler().set(FUNC(bitgraph_state::com8116_b_ft_w));
PIA6821(config, m_pia, 0);
m_pia->readca1_handler().set(FUNC(bitgraph_state::pia_ca1_r));
m_pia->cb2_handler().set(FUNC(bitgraph_state::pia_cb2_w));
m_pia->readpa_handler().set(FUNC(bitgraph_state::pia_pa_r));
m_pia->writepa_handler().set(FUNC(bitgraph_state::pia_pa_w));
m_pia->readpb_handler().set(FUNC(bitgraph_state::pia_pb_r));
m_pia->writepb_handler().set(FUNC(bitgraph_state::pia_pb_w));
ER2055(config, m_earom, 0);
SPEAKER(config, "mono").front_center();
AY8912(config, m_psg, XTAL(1'294'400));
m_psg->port_a_write_callback().set(FUNC(bitgraph_state::earom_write));
m_psg->add_route(ALL_OUTPUTS, "mono", 1.00);
}
示例15: mquake
INPUT_PORTS_END
/*************************************
*
* Machine driver
*
*************************************/
void mquake_state::mquake(machine_config &config)
{
/* basic machine hardware */
M68000(config, m_maincpu, amiga_state::CLK_7M_NTSC);
m_maincpu->set_addrmap(AS_PROGRAM, &mquake_state::main_map);
ADDRESS_MAP_BANK(config, "overlay").set_map(&amiga_state::overlay_512kb_map).set_options(ENDIANNESS_BIG, 16, 22, 0x200000);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
ntsc_video(config);
PALETTE(config, m_palette, FUNC(mquake_state::amiga_palette), 4096);
MCFG_VIDEO_START_OVERRIDE(mquake_state,amiga)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
paula_8364_device &paula(PAULA_8364(config, "amiga", amiga_state::CLK_C1_NTSC));
paula.add_route(0, "lspeaker", 0.50);
paula.add_route(1, "rspeaker", 0.50);
paula.add_route(2, "rspeaker", 0.50);
paula.add_route(3, "lspeaker", 0.50);
paula.mem_read_cb().set(FUNC(amiga_state::chip_ram_r));
paula.int_cb().set(FUNC(amiga_state::paula_int_w));
ES5503(config, m_es5503, amiga_state::CLK_7M_NTSC); /* ES5503 is likely mono due to channel strobe used as bank select */
m_es5503->set_channels(1);
m_es5503->set_addrmap(0, &mquake_state::mquake_es5503_map);
m_es5503->add_route(0, "lspeaker", 0.50);
m_es5503->add_route(0, "rspeaker", 0.50);
/* cia */
MOS8520(config, m_cia_0, amiga_state::CLK_E_NTSC);
m_cia_0->irq_wr_callback().set(FUNC(amiga_state::cia_0_irq));
m_cia_0->pa_rd_callback().set_ioport("CIA0PORTA");
m_cia_0->pa_wr_callback().set(FUNC(amiga_state::cia_0_port_a_write));
MOS8520(config, m_cia_1, amiga_state::CLK_E_NTSC);
m_cia_1->irq_wr_callback().set(FUNC(amiga_state::cia_1_irq));
/* fdc */
AMIGA_FDC(config, m_fdc, amiga_state::CLK_7M_NTSC);
m_fdc->index_callback().set("cia_1", FUNC(mos8520_device::flag_w));
m_fdc->read_dma_callback().set(FUNC(amiga_state::chip_ram_r));
m_fdc->write_dma_callback().set(FUNC(amiga_state::chip_ram_w));
m_fdc->dskblk_callback().set(FUNC(amiga_state::fdc_dskblk_w));
m_fdc->dsksyn_callback().set(FUNC(amiga_state::fdc_dsksyn_w));
}