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); }
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); }
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); }
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); }
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); }
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"); }
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); }
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); }
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); }
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); }
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); }
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 }
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"); }
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); }
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)); }
void spinb_state::spinb(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, XTAL(5'000'000) / 2); m_maincpu->set_addrmap(AS_PROGRAM, &spinb_state::spinb_map); m_maincpu->set_periodic_int(FUNC(spinb_state::irq0_line_hold), attotime::from_hz(160)); // NE556 adjustable (if faster, then jolypark has a stack problem) Z80(config, m_audiocpu, XTAL(5'000'000) / 2); m_audiocpu->set_addrmap(AS_PROGRAM, &spinb_state::spinb_audio_map); Z80(config, m_musiccpu, XTAL(5'000'000) / 2); m_musiccpu->set_addrmap(AS_PROGRAM, &spinb_state::spinb_music_map); I8031(config, m_dmdcpu, XTAL(16'000'000)); m_dmdcpu->set_addrmap(AS_PROGRAM, &spinb_state::dmd_mem); m_dmdcpu->set_addrmap(AS_IO, &spinb_state::dmd_io); m_dmdcpu->port_out_cb<1>().set(FUNC(spinb_state::p1_w)); m_dmdcpu->port_in_cb<3>().set(FUNC(spinb_state::p3_r)); m_dmdcpu->port_out_cb<3>().set(FUNC(spinb_state::p3_w)); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1); /* Video */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD)); screen.set_refresh_hz(60); screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); screen.set_screen_update(FUNC(spinb_state::screen_update)); screen.set_size(128, 32); screen.set_visarea(0, 127, 0, 31); screen.set_palette("palette"); PALETTE(config, "palette", FUNC(spinb_state::spinb_palette), 3); /* Sound */ genpin_audio(config); SPEAKER(config, "msmavol").front_center(); MSM5205(config, m_msm_a, XTAL(384'000)); m_msm_a->vck_callback().set("ic5a", FUNC(ttl7474_device::clock_w)); m_msm_a->set_prescaler_selector(msm5205_device::S48_4B); /* 4KHz 4-bit */ m_msm_a->add_route(ALL_OUTPUTS, "msmavol", 1.0); SPEAKER(config, "msmmvol").front_center(); MSM5205(config, m_msm_m, XTAL(384'000)); m_msm_m->vck_callback().set("ic5m", FUNC(ttl7474_device::clock_w)); m_msm_m->set_prescaler_selector(msm5205_device::S48_4B); /* 4KHz 4-bit */ m_msm_m->add_route(ALL_OUTPUTS, "msmmvol", 1.0); /* Devices */ i8255_device &ppi60(I8255A(config, "ppi60")); //ppi60.in_pa_callback().set(FUNC(spinb_state::ppi60a_r)); ppi60.out_pa_callback().set(FUNC(spinb_state::ppi60a_w)); //ppi60.in_pb_callback().set(FUNC(spinb_state::ppi60b_r)); ppi60.out_pb_callback().set(FUNC(spinb_state::ppi60b_w)); ppi60.in_pc_callback().set(FUNC(spinb_state::sw_r)); //ppi60.out_pc_callback().set(FUNC(spinb_state::ppi60c_w)); i8255_device &ppi64(I8255A(config, "ppi64")); //ppi64.in_pa_callback().set(FUNC(spinb_state::ppi64a_r)); //ppi64.out_pa_callback().set(FUNC(spinb_state::ppi64a_w)); //ppi64.in_pb_callback().set(FUNC(spinb_state::ppi64b_r)); //ppi64.out_pb_callback().set(FUNC(spinb_state::ppi64b_w)); //ppi64.in_pc_callback().set(FUNC(spinb_state::ppi64c_r)); ppi64.out_pc_callback().set(FUNC(spinb_state::ppi64c_w)); I8255A(config, "ppi68"); //ppi68.in_pa_callback().set(FUNC(spinb_state::ppi68a_r)); //ppi68.out_pa_callback().set(FUNC(spinb_state::ppi68a_w)); //ppi68.in_pb_callback().set(FUNC(spinb_state::ppi68b_r)); //ppi68.out_pb_callback().set(FUNC(spinb_state::ppi68b_w)); //ppi68.in_pc_callback().set(FUNC(spinb_state::ppi68c_r)); //ppi68.out_pc_callback().set(FUNC(spinb_state::ppi68c_w)); I8255A(config, "ppi6c"); //ppi6c.in_pa_callback().set(FUNC(spinb_state::ppi6ca_r)); //ppi6c.out_pa_callback().set(FUNC(spinb_state::ppi6ca_w)); //ppi6c.in_pb_callback().set(FUNC(spinb_state::ppi6cb_r)); //ppi6c.out_pb_callback().set(FUNC(spinb_state::ppi6cb_w)); //ppi6c.in_pc_callback().set(FUNC(spinb_state::ppi6cc_r)); //ppi6c.out_pc_callback().set(FUNC(spinb_state::ppi6cc_w)); i8255_device &ppia(I8255A(config, "ppia")); ppia.out_pa_callback().set(FUNC(spinb_state::ppia_a_w)); ppia.out_pb_callback().set(FUNC(spinb_state::ppia_b_w)); ppia.in_pc_callback().set(FUNC(spinb_state::ppia_c_r)); ppia.out_pc_callback().set(FUNC(spinb_state::ppia_c_w)); i8255_device &ppim(I8255A(config, "ppim")); ppim.out_pa_callback().set(FUNC(spinb_state::ppim_a_w)); ppim.out_pb_callback().set(FUNC(spinb_state::ppim_b_w)); ppim.in_pc_callback().set(FUNC(spinb_state::ppim_c_r)); ppim.out_pc_callback().set(FUNC(spinb_state::ppim_c_w)); TTL7474(config, m_ic5a, 0); m_ic5a->comp_output_cb().set(FUNC(spinb_state::ic5a_w)); HC157(config, m_ic14a, 0); // actually IC15 on Jolly Park m_ic14a->out_callback().set("msm_a", FUNC(msm5205_device::data_w)); TTL7474(config, m_ic5m, 0); m_ic5m->comp_output_cb().set(FUNC(spinb_state::ic5m_w)); HC157(config, m_ic14m, 0); // actually IC15 on Jolly Park m_ic14m->out_callback().set("msm_m", FUNC(msm5205_device::data_w)); }