void konendev_state::konendev(machine_config &config) { /* basic machine hardware */ PPC403GCX(config, m_maincpu, 32000000); // Clock unknown m_maincpu->set_addrmap(AS_PROGRAM, &konendev_state::konendev_map); m_maincpu->set_vblank_int("screen", FUNC(konendev_state::vbl_interrupt)); /* video hardware */ PALETTE(config, "palette", palette_device::RGB_555); screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(60); screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // Not accurate screen.set_size(640, 480); screen.set_visarea(0, 639, 0, 479); screen.set_screen_update(FUNC(konendev_state::screen_update)); screen.set_palette("palette"); K057714(config, m_gcu, 0); m_gcu->irq_callback().set(FUNC(konendev_state::gcu_interrupt)); NVRAM(config, "nvram0", nvram_device::DEFAULT_ALL_0); NVRAM(config, "nvram1", nvram_device::DEFAULT_ALL_0); EEPROM_93C56_16BIT(config, "eeprom"); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); ymz280b_device &ymz(YMZ280B(config, "ymz", 16934400)); // Clock unknown ymz.add_route(0, "lspeaker", 1.0); ymz.add_route(1, "rspeaker", 1.0); }
void csplayh5_state::csplayh5(machine_config &config) { /* basic machine hardware */ TMP68301(config, m_maincpu, 16000000); /* TMP68301-16 */ m_maincpu->set_addrmap(AS_PROGRAM, &csplayh5_state::csplayh5_map); m_maincpu->out_parallel_callback().set(FUNC(csplayh5_state::tmp68301_parallel_port_w)); TIMER(config, "scantimer", 0).configure_scanline(timer_device::expired_delegate(FUNC(csplayh5_state::csplayh5_irq), this), "screen", 0, 1); #if USE_H8 h830002_device &subcpu(H83002(config, "subcpu", DVD_CLOCK/2)); /* unknown divider */ subcpu.set_addrmap(AS_PROGRAM, &csplayh5_state::csplayh5_sub_map); subcpu.set_addrmap(AS_IO, &csplayh5_state::csplayh5_sub_io_map); ide_controller_device &ide(IDE_CONTROLLER(config, "ide").options(ata_devices, "hdd", nullptr, true)); // dvd ide.irq_handler().set(FUNC(csplayh5_state::ide_irq)); #endif NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); /* video hardware */ v9958_device &v9958(V9958(config, "v9958", XTAL(21'477'272))); // typical 9958 clock, not verified v9958.set_screen_ntsc("screen"); v9958.set_vram_size(0x20000); v9958.int_cb().set(FUNC(csplayh5_state::csplayh5_vdp0_interrupt)); SCREEN(config, "screen", SCREEN_TYPE_RASTER); /* sound hardware */ NICHISND(config, m_nichisnd, 0); }
void harriet_state::harriet(machine_config &config) { M68010(config, m_maincpu, 40_MHz_XTAL / 4); // MC68010FN10 m_maincpu->set_addrmap(AS_PROGRAM, &harriet_state::harriet_map); MC68681(config, "duart", 3.6864_MHz_XTAL); mc68901_device &mfp(MC68901(config, "mfp", 40_MHz_XTAL / 16)); mfp.set_timer_clock(2.4576_MHz_XTAL); mfp.set_rx_clock(9600); mfp.set_tx_clock(9600); mfp.out_so_cb().set("rs232", FUNC(rs232_port_device::write_txd)); //mfp.out_tco_cb().set("mfp", FUNC(mc68901_device::rc_w)); //mfp.out_tdo_cb().set("mfp", FUNC(mc68901_device::tc_w)); HD63450(config, "dmac", 40_MHz_XTAL / 4, "maincpu"); // MC68450R10 (or HD68450Y-10) M48T02(config, "timekpr"); NVRAM(config, "zpram", nvram_device::DEFAULT_ALL_0); // MK48Z02 rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal")); rs232.rxd_handler().set("mfp", FUNC(mc68901_device::write_rx)); rs232.rxd_handler().append("mfp", FUNC(mc68901_device::tbi_w)); NSCSI_BUS(config, "scsia"); NSCSI_CONNECTOR(config, "scsia:7").option_set("wdc", WD33C93A).clock(40_MHz_XTAL / 4); //WD33C93(config, "wdcb", 40_MHz_XTAL / 4); //IMSC012(config, "c012", 40_MHz_XTAL / 8); // INMOS IMSC012-P20S link adaptor }
void ettrivia_state::ettrivia(machine_config &config) { Z80(config, m_maincpu, 12000000/4-48000); //should be ok, it gives the 300 interrupts expected m_maincpu->set_addrmap(AS_PROGRAM, &ettrivia_state::cpu_map); m_maincpu->set_addrmap(AS_IO, &ettrivia_state::io_map); m_maincpu->set_vblank_int("screen", FUNC(ettrivia_state::ettrivia_interrupt)); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); /* video hardware */ 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(256, 256); screen.set_visarea(0*8, 32*8-1, 0*8, 28*8-1); screen.set_screen_update(FUNC(ettrivia_state::screen_update_ettrivia)); screen.set_palette("palette"); GFXDECODE(config, m_gfxdecode, "palette", gfx_ettrivia); PALETTE(config, "palette", FUNC(ettrivia_state::ettrivia_palette), 256); /* sound hardware */ SPEAKER(config, "mono").front_center(); AY8912(config, m_ay[0], 1500000).add_route(ALL_OUTPUTS, "mono", 0.25); AY8912(config, m_ay[1], 1500000); m_ay[1]->port_a_read_callback().set_ioport("IN1"); m_ay[1]->add_route(ALL_OUTPUTS, "mono", 0.25); AY8912(config, m_ay[2], 1500000); m_ay[2]->port_a_read_callback().set_ioport("IN0"); m_ay[2]->add_route(ALL_OUTPUTS, "mono", 0.25); }
INPUT_PORTS_END /************************************* * * Machine drivers * *************************************/ void omegrace_state::omegrace(machine_config &config) { /* basic machine hardware */ /* main CPU */ /* XTAL101 Crystal @ 12mhz */ /* through 74LS161, Pin 13 = divide by 4 */ Z80(config, m_maincpu, XTAL(12'000'000)/4); m_maincpu->set_addrmap(AS_PROGRAM, &omegrace_state::main_map); m_maincpu->set_addrmap(AS_IO, &omegrace_state::port_map); m_maincpu->set_periodic_int(FUNC(omegrace_state::irq0_line_hold), attotime::from_hz(250)); /* audio CPU */ /* XTAL101 Crystal @ 12mhz */ /* through 74LS161, Pin 12 = divide by 8 */ /* Fed to CPU as 1.5mhz though line J4-D */ Z80(config, m_audiocpu, XTAL(12'000'000)/8); m_audiocpu->set_addrmap(AS_PROGRAM, &omegrace_state::sound_map); m_audiocpu->set_addrmap(AS_IO, &omegrace_state::sound_port); m_audiocpu->set_periodic_int(FUNC(omegrace_state::nmi_line_pulse), attotime::from_hz(250)); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ VECTOR(config, "vector", 0); screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_VECTOR)); screen.set_refresh_hz(40); screen.set_size(400, 300); screen.set_visarea(522, 1566, 522, 1566); screen.set_screen_update("vector", FUNC(vector_device::screen_update)); DVG(config, m_dvg, 0); m_dvg->set_vector_tag("vector"); /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); /* XTAL101 Crystal @ 12mhz */ /* through 74LS92, Pin 8 = divide by 12 */ AY8912(config, "ay1", XTAL(12'000'000)/12).add_route(ALL_OUTPUTS, "mono", 0.25); AY8912(config, "ay2", XTAL(12'000'000)/12).add_route(ALL_OUTPUTS, "mono", 0.25); }
void mazerbla_state::greatgun(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, MASTER_CLOCK); /* 4 MHz, no NMI, IM2 - vectors at 0xf8, 0xfa, 0xfc */ m_maincpu->set_addrmap(AS_PROGRAM, &mazerbla_state::mazerbla_map); m_maincpu->set_addrmap(AS_IO, &mazerbla_state::greatgun_io_map); m_maincpu->set_irq_acknowledge_callback(FUNC(mazerbla_state::irq_callback)); Z80(config, m_subcpu, SOUND_CLOCK / 4); /* 3.579500 MHz, NMI - caused by sound command write, periodic INT */ m_subcpu->set_addrmap(AS_PROGRAM, &mazerbla_state::greatgun_sound_map); m_subcpu->set_periodic_int(FUNC(mazerbla_state::sound_interrupt), attotime::from_hz((double)14318180/16/16/16/16 )); z80_device &sub2(Z80(config, "sub2", MASTER_CLOCK)); /* 4 MHz, no NMI, IM1 INT */ sub2.set_addrmap(AS_PROGRAM, &mazerbla_state::mazerbla_cpu3_map); sub2.set_addrmap(AS_IO, &mazerbla_state::greatgun_cpu3_io_map); /* (vblank related ??) int generated by a custom video processor and cleared on ANY port access. but handled differently for now */ sub2.set_vblank_int("screen", FUNC(mazerbla_state::irq0_line_hold)); MB_VCU(config, m_vcu, SOUND_CLOCK/4); m_vcu->set_cpu_tag("sub2"); m_vcu->set_palette_tag("palette"); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); /* video hardware */ SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_refresh_hz(60); m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */); m_screen->set_size(40*8, 32*8); m_screen->set_visarea(0*8, 32*8-1, 0*8, 28*8-1); m_screen->set_screen_update(FUNC(mazerbla_state::screen_update_mazerbla)); m_screen->screen_vblank().set(FUNC(mazerbla_state::screen_vblank)); PALETTE(config, "palette", FUNC(mazerbla_state::mazerbla_palette), 246+1); /* sound hardware */ SPEAKER(config, "mono").front_center(); ay8910_device &ay1(AY8910(config, "ay1", SOUND_CLOCK / 8)); ay1.port_b_read_callback().set(m_soundlatch, FUNC(generic_latch_8_device::read)); ay1.add_route(ALL_OUTPUTS, "mono", 0.30); ay8910_device &ay2(AY8910(config, "ay2", SOUND_CLOCK / 8)); ay2.port_b_write_callback().set(FUNC(mazerbla_state::gg_led_ctrl_w)); ay2.add_route(ALL_OUTPUTS, "mono", 1.0); GENERIC_LATCH_8(config, m_soundlatch); m_soundlatch->data_pending_callback().set_inputline(m_subcpu, INPUT_LINE_NMI); m_soundlatch->set_separate_acknowledge(true); }
void s4_state::s4(machine_config &config) { /* basic machine hardware */ M6800(config, m_maincpu, 3580000); m_maincpu->set_addrmap(AS_PROGRAM, &s4_state::s4_main_map); TIMER(config, "irq").configure_periodic(FUNC(s4_state::irq), attotime::from_hz(250)); MCFG_MACHINE_RESET_OVERRIDE(s4_state, s4) /* Video */ config.set_default_layout(layout_s4); /* Sound */ genpin_audio(config); /* Devices */ PIA6821(config, m_pia22, 0); m_pia22->writepa_handler().set(FUNC(s4_state::sol0_w)); m_pia22->writepb_handler().set(FUNC(s4_state::sol1_w)); m_pia22->ca2_handler().set(FUNC(s4_state::pia22_ca2_w)); m_pia22->cb2_handler().set(FUNC(s4_state::pia22_cb2_w)); m_pia22->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE); m_pia22->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE); PIA6821(config, m_pia24, 0); m_pia24->writepa_handler().set(FUNC(s4_state::lamp0_w)); m_pia24->writepb_handler().set(FUNC(s4_state::lamp1_w)); m_pia24->ca2_handler().set(FUNC(s4_state::pia24_ca2_w)); m_pia24->cb2_handler().set(FUNC(s4_state::pia24_cb2_w)); m_pia24->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE); m_pia24->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE); PIA6821(config, m_pia28, 0); m_pia28->readpa_handler().set(FUNC(s4_state::dips_r)); m_pia28->readca1_handler().set(FUNC(s4_state::pia28_ca1_r)); m_pia28->readcb1_handler().set(FUNC(s4_state::pia28_cb1_r)); m_pia28->writepa_handler().set(FUNC(s4_state::dig0_w)); m_pia28->writepb_handler().set(FUNC(s4_state::dig1_w)); m_pia28->ca2_handler().set(FUNC(s4_state::pia28_ca2_w)); m_pia28->cb2_handler().set(FUNC(s4_state::pia28_cb2_w)); m_pia28->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE); m_pia28->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE); PIA6821(config, m_pia30, 0); m_pia30->readpa_handler().set(FUNC(s4_state::switch_r)); m_pia30->writepb_handler().set(FUNC(s4_state::switch_w)); m_pia30->ca2_handler().set(FUNC(s4_state::pia30_ca2_w)); m_pia30->cb2_handler().set(FUNC(s4_state::pia30_cb2_w)); m_pia30->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE); m_pia30->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); }
void _88games_state::_88games(machine_config &config) { /* basic machine hardware */ KONAMI(config, m_maincpu, 3000000); /* ? */ m_maincpu->set_addrmap(AS_PROGRAM, &_88games_state::main_map); m_maincpu->line().set(FUNC(_88games_state::banking_callback)); Z80(config, m_audiocpu, 3579545); m_audiocpu->set_addrmap(AS_PROGRAM, &_88games_state::sound_map); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ 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(12*8, (64-12)*8-1, 2*8, 30*8-1); screen.set_screen_update(FUNC(_88games_state::screen_update_88games)); screen.set_palette("palette"); screen.screen_vblank().set(FUNC(_88games_state::vblank_irq)); palette_device &palette(PALETTE(config, "palette", 2048)); palette.enable_shadows(); palette.set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR); K052109(config, m_k052109, 0); m_k052109->set_palette("palette"); m_k052109->set_tile_callback(FUNC(_88games_state::tile_callback), this); K051960(config, m_k051960, 0); m_k051960->set_palette("palette"); m_k051960->set_screen_tag("screen"); m_k051960->set_sprite_callback(FUNC(_88games_state::sprite_callback), this); K051316(config, m_k051316, 0); m_k051316->set_palette("palette"); m_k051316->set_zoom_callback(FUNC(_88games_state::zoom_callback), this); /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, "soundlatch"); YM2151(config, "ymsnd", 3579545).add_route(0, "mono", 0.75).add_route(1, "mono", 0.75); UPD7759(config, m_upd7759[0]).add_route(ALL_OUTPUTS, "mono", 0.30); UPD7759(config, m_upd7759[1]).add_route(ALL_OUTPUTS, "mono", 0.30); }
void gamemasters_state::gmsshoot(machine_config &config) { R65C02(config, m_maincpu, 4_MHz_XTAL / 4); // divider not verified m_maincpu->set_addrmap(AS_PROGRAM, &gamemasters_state::mem_map); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // MK48Z02B-25 // LCD video? SPEAKER(config, "mono").front_center(); ay8912_device &aysnd(AY8912(config, "aysnd", 4_MHz_XTAL / 4)); aysnd.port_a_read_callback().set_ioport("DSW"); aysnd.add_route(ALL_OUTPUTS, "mono", 0.30); }
GFXDECODE_END /********************************************* * Machine Drivers * *********************************************/ void gluck2_state::gluck2(machine_config &config) { /* basic machine hardware */ M6502(config, m_maincpu, MASTER_CLOCK/16); /* guess */ m_maincpu->set_addrmap(AS_PROGRAM, &gluck2_state::gluck2_map); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(60); screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); /* CRTC Register: 00 01 02 03 04 05 06 CRTC Value : 0x27 0x20 0x23 0x03 0x26 0x00 0x20 */ screen.set_size((39+1)*8, (38+1)*8); /* from MC6845 init, registers 00 & 04. (value - 1) */ screen.set_visarea(0*8, 32*8-1, 0*8, 32*8-1); /* from MC6845 init, registers 01 & 06. */ screen.set_screen_update(FUNC(gluck2_state::screen_update)); GFXDECODE(config, m_gfxdecode, "palette", gfx_gluck2); PALETTE(config, "palette", palette_device::RGB_444_PROMS, "proms", 256); mc6845_device &crtc(MC6845(config, "crtc", MASTER_CLOCK/16)); /* guess */ crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); crtc.out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); /* sound hardware */ SPEAKER(config, "mono").front_center(); ay8910_device &ay8910(AY8910(config, "ay8910", MASTER_CLOCK/8)); /* guess */ ay8910.port_a_read_callback().set_ioport("SW3"); ay8910.port_b_read_callback().set_ioport("SW2"); /* Output ports have a minimal activity during init. They seems unused (at least for Good Luck II) */ ay8910.add_route(ALL_OUTPUTS, "mono", 1.0); YM2413(config, "ymsnd", SND_CLOCK).add_route(ALL_OUTPUTS, "mono", 1.0); }
void qdrmfgp_state::qdrmfgp(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, XTAL(32'000'000)/2); m_maincpu->set_addrmap(AS_PROGRAM, &qdrmfgp_state::qdrmfgp_map); TIMER(config, "scantimer").configure_scanline(FUNC(qdrmfgp_state::qdrmfgp_interrupt), "screen", 0, 1); MCFG_MACHINE_START_OVERRIDE(qdrmfgp_state,qdrmfgp) NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1); ATA_INTERFACE(config, m_ata).options(ata_devices, "hdd", nullptr, true); m_ata->irq_handler().set(FUNC(qdrmfgp_state::ide_interrupt)); /* video hardware */ 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(40, 40+384-1, 16, 16+224-1); screen.set_screen_update(FUNC(qdrmfgp_state::screen_update_qdrmfgp)); screen.set_palette(m_palette); PALETTE(config, m_palette, 2048); m_palette->set_format(PALETTE_FORMAT_xBBBBBGGGGGRRRRR); MCFG_VIDEO_START_OVERRIDE(qdrmfgp_state,qdrmfgp) K056832(config, m_k056832, 0); m_k056832->set_tile_callback(FUNC(qdrmfgp_state::qdrmfgp_tile_callback), this); m_k056832->set_config("gfx1", K056832_BPP_4dj, 1, 0); m_k056832->set_palette(m_palette); K053252(config, m_k053252, XTAL(32'000'000)/4); m_k053252->set_offsets(40, 16); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); k054539_device &k054539(K054539(config, m_k054539, XTAL(18'432'000))); k054539.set_addrmap(0, &qdrmfgp_state::qdrmfgp_k054539_map); k054539.timer_handler().set(FUNC(qdrmfgp_state::k054539_irq1_gen)); k054539.add_route(0, "lspeaker", 1.0); k054539.add_route(1, "rspeaker", 1.0); }
INPUT_PORTS_END void stratos_state::stratos(machine_config &config) { M65C02(config, maincpu, 5670000); maincpu->set_addrmap(AS_PROGRAM, &stratos_state::stratos_mem); screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD)); screen.set_refresh_hz(50); screen.set_size(240, 64); screen.set_visarea(0, 239, 0, 63); screen.set_screen_update(FUNC(stratos_state::screen_update)); TIMER(config, "irq").configure_periodic(FUNC(stratos_state::irq_timer), attotime::from_hz(1000)); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); }
void v550_state::v550(machine_config &config) { Z80(config, m_maincpu, 34.846_MHz_XTAL / 16); // NEC D780C (2.177875 MHz verified) m_maincpu->set_addrmap(AS_PROGRAM, &v550_state::mem_map); m_maincpu->set_addrmap(AS_IO, &v550_state::io_map); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // NEC D444C-2 + battery upd7220_device &gdc(UPD7220(config, "gdc", 34.846_MHz_XTAL / 16)); // NEC D7220D (2.177875 MHz verified) gdc.set_screen("screen"); I8255(config, "ppi"); // NEC D8255AC-5 I8251(config, m_usart, 34.846_MHz_XTAL / 16); // NEC D8251AC m_usart->rxrdy_handler().set("mainint", FUNC(input_merger_device::in_w<1>)); upd7201_new_device& mpsc(UPD7201_NEW(config, "mpsc", 34.846_MHz_XTAL / 16)); // NEC D7201C mpsc.out_int_callback().set("mainint", FUNC(input_merger_device::in_w<0>)); INPUT_MERGER_ANY_HIGH(config, "mainint").output_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0); com8116_device &brg1(COM8116(config, "brg1", 5068800)); // actually SMC COM8116T-020 (unknown clock) brg1.ft_handler().set("mpsc", FUNC(upd7201_new_device::txca_w)); brg1.fr_handler().set("mpsc", FUNC(upd7201_new_device::rxca_w)); com8116_device &brg2(COM8116(config, "brg2", 5068800)); // actually SMC COM8116T-020 brg2.ft_handler().set("mpsc", FUNC(upd7201_new_device::txcb_w)); brg2.ft_handler().append("mpsc", FUNC(upd7201_new_device::rxcb_w)); brg2.fr_handler().set("usart", FUNC(i8251_device::write_txc)); brg2.fr_handler().append("usart", FUNC(i8251_device::write_rxc)); mcs48_cpu_device &kbdmcu(I8035(config, "kbdmcu", 4'608'000)); kbdmcu.set_addrmap(AS_PROGRAM, &v550_state::kbd_map); SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_raw(34.846_MHz_XTAL, 19 * 102, 0, 19 * 80, 295, 0, 272); m_screen->set_screen_update(FUNC(v550_state::screen_update)); scn2672_device &pvtc(SCN2672(config, "pvtc", 34.846_MHz_XTAL / 19)); pvtc.set_addrmap(0, &v550_state::pvtc_char_map); pvtc.set_addrmap(1, &v550_state::pvtc_attr_map); pvtc.set_character_width(19); pvtc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); pvtc.set_screen("screen"); // SCB2673 clock verified at 17.423 MHz }
void mephisto_modena_state::modena(machine_config &config) { M65C02(config, m_maincpu, XTAL(4'194'304)); // W65C02SP m_maincpu->set_addrmap(AS_PROGRAM, &mephisto_modena_state::modena_mem); timer_device &nmi_on(TIMER(config, "nmi_on")); nmi_on.configure_periodic(FUNC(mephisto_modena_state::nmi_on), attotime::from_hz(XTAL(4'194'304) / (1 << 13))); nmi_on.set_start_delay(attotime::from_hz(XTAL(4'194'304) / (1 << 13)) - attotime::from_usec(975)); // active for 975us TIMER(config, "nmi_off").configure_periodic(FUNC(mephisto_modena_state::nmi_off), attotime::from_hz(XTAL(4'194'304) / (1 << 13))); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); MEPHISTO_BUTTONS_BOARD(config, m_board, 0); m_board->set_disable_leds(true); config.set_default_layout(layout_mephisto_modena); /* sound hardware */ SPEAKER(config, "mono").front_center(); BEEP(config, m_beeper, 3250).add_route(ALL_OUTPUTS, "mono", 1.0); }
void mazerbla_state::mazerbla(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, MASTER_CLOCK); /* 4 MHz, no NMI, IM2 - vectors at 0xf8, 0xfa, 0xfc */ m_maincpu->set_addrmap(AS_PROGRAM, &mazerbla_state::mazerbla_map); m_maincpu->set_addrmap(AS_IO, &mazerbla_state::mazerbla_io_map); m_maincpu->set_irq_acknowledge_callback(FUNC(mazerbla_state::irq_callback)); Z80(config, m_subcpu, MASTER_CLOCK); /* 4 MHz, NMI, IM1 INT */ m_subcpu->set_addrmap(AS_PROGRAM, &mazerbla_state::mazerbla_cpu2_map); m_subcpu->set_addrmap(AS_IO, &mazerbla_state::mazerbla_cpu2_io_map); m_subcpu->set_periodic_int(FUNC(mazerbla_state::irq0_line_hold), attotime::from_hz(400)); /* frequency in Hz */ z80_device &sub2(Z80(config, "sub2", MASTER_CLOCK)); /* 4 MHz, no NMI, IM1 INT */ sub2.set_addrmap(AS_PROGRAM, &mazerbla_state::mazerbla_cpu3_map); sub2.set_addrmap(AS_IO, &mazerbla_state::mazerbla_cpu3_io_map); /* (vblank related ??) int generated by a custom video processor and cleared on ANY port access. but handled differently for now */ sub2.set_vblank_int("screen", FUNC(mazerbla_state::irq0_line_hold)); /* synchronization forced on the fly */ MB_VCU(config, m_vcu, SOUND_CLOCK/4); m_vcu->set_cpu_tag("sub2"); m_vcu->set_palette_tag("palette"); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); /* video hardware */ SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_refresh_hz(60); m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */); m_screen->set_size(40*8, 32*8); m_screen->set_visarea(0*8, 32*8-1, 0*8, 28*8-1); m_screen->set_screen_update(FUNC(mazerbla_state::screen_update_mazerbla)); m_screen->screen_vblank().set(FUNC(mazerbla_state::screen_vblank)); PALETTE(config, "palette", FUNC(mazerbla_state::mazerbla_palette), 256+1); /* sound hardware */ }
void holeland_state::crzrally(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, 20000000/4); /* 5 MHz */ m_maincpu->set_addrmap(AS_PROGRAM, &holeland_state::crzrally_map); m_maincpu->set_addrmap(AS_IO, &holeland_state::io_map); m_maincpu->set_vblank_int("screen", FUNC(holeland_state::irq0_line_hold)); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1); LS259(config, m_latch); m_latch->parallel_out_cb().set(FUNC(holeland_state::pal_offs_w)).mask(0x03); m_latch->q_out_cb<5>().set(FUNC(holeland_state::coin_counter_w)); WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(59); screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); screen.set_size(32*8, 32*8); screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); screen.set_screen_update(FUNC(holeland_state::screen_update_crzrally)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_crzrally); PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256); MCFG_VIDEO_START_OVERRIDE(holeland_state,crzrally) /* sound hardware */ SPEAKER(config, "mono").front_center(); ay8910_device &ay1(AY8910(config, "ay1", 20000000/16)); ay1.port_a_read_callback().set_ioport("IN0"); ay1.port_b_read_callback().set_ioport("IN1"); ay1.add_route(ALL_OUTPUTS, "mono", 0.25); ay8910_device &ay2(AY8910(config, "ay2", 20000000/16)); ay2.port_a_read_callback().set_ioport("DSW1"); ay2.port_b_read_callback().set_ioport("DSW2"); ay2.add_route(ALL_OUTPUTS, "mono", 0.25); }
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 wildpkr_state::tabpkr(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, XTAL(24'000'000) / 2); m_maincpu->set_addrmap(AS_PROGRAM, &wildpkr_state::tabpkr_map); m_maincpu->set_periodic_int(FUNC(wildpkr_state::irq3_line_assert), attotime::from_hz(60*256)); m_maincpu->set_addrmap(m68000_base_device::AS_CPU_SPACE, &wildpkr_state::cpu_space_map); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1); // DS1220Y MC68681(config, m_duart, 3686400); m_duart->irq_cb().set_inputline(m_maincpu, M68K_IRQ_2, ASSERT_LINE); DS2401(config, m_id, 0); CLOCK(config, m_dac_clock, 1500000); // base rate derived from program code m_dac_clock->signal_handler().set_inputline(m_maincpu, M68K_IRQ_5, ASSERT_LINE); screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(60); screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); screen.set_size(384, 280); screen.set_visarea(0, 384-1, 0, 280-1); screen.set_screen_update("acrtc", FUNC(hd63484_device::update_screen)); screen.set_palette("palette"); screen.screen_vblank().set_inputline(m_maincpu, M68K_IRQ_4, ASSERT_LINE); HD63484(config, "acrtc", 0).set_addrmap(0, &wildpkr_state::hd63484_map); ramdac_device &ramdac(RAMDAC(config, "ramdac", 0, "palette")); ramdac.set_addrmap(0, &wildpkr_state::ramdac_map); PALETTE(config, "palette", FUNC(wildpkr_state::wildpkr_palette), 256); /* sound hardware */ SPEAKER(config, "mono").front_center(); AD557(config, m_dac, 0).add_route(ALL_OUTPUTS, "mono", 0.50); voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref")); vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); }
void ojankohs_state::ccasino(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, 12000000/2); /* 6.00 MHz ? */ m_maincpu->set_addrmap(AS_PROGRAM, &ojankohs_state::ojankoy_map); m_maincpu->set_addrmap(AS_IO, &ojankohs_state::ccasino_io_map); m_maincpu->set_vblank_int("screen", FUNC(ojankohs_state::irq0_line_hold)); MCFG_MACHINE_START_OVERRIDE(ojankohs_state,ojankohs) NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); /* video hardware */ SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_refresh_hz(60); m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); m_screen->set_size(512, 512); m_screen->set_visarea(0, 288-1, 0, 224-1); m_screen->set_screen_update(FUNC(ojankohs_state::screen_update_ojankohs)); m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_ojankohs); PALETTE(config, m_palette).set_entries(1024); VSYSTEM_GGA(config, "gga", XTAL(13'333'000)/2); // divider not verified MCFG_VIDEO_START_OVERRIDE(ojankohs_state,ccasino) /* sound hardware */ SPEAKER(config, "mono").front_center(); ay8910_device &aysnd(AY8910(config, "aysnd", 12000000/8)); aysnd.port_a_read_callback().set_ioport("dsw1"); aysnd.port_b_read_callback().set_ioport("dsw2"); aysnd.add_route(ALL_OUTPUTS, "mono", 0.15); MSM5205(config, m_msm, 384000); m_msm->vck_legacy_callback().set(FUNC(ojankohs_state::ojankohs_adpcm_int)); /* IRQ handler */ m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz */ m_msm->add_route(ALL_OUTPUTS, "mono", 0.50); }
INPUT_PORTS_END void qvt6800_state::qvt190(machine_config &config) { M6800(config, m_maincpu, XTAL(16'669'800) / 9); m_maincpu->set_addrmap(AS_PROGRAM, &qvt6800_state::qvt190_mem_map); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // V61C16P55L + battery ACIA6850(config, "acia1", 0); ACIA6850(config, "acia2", 0); screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_raw(XTAL(16'669'800), 882, 0, 720, 315, 0, 300); screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update)); mc6845_device &crtc(MC6845(config, "crtc", XTAL(16'669'800) / 9)); crtc.set_screen("screen"); crtc.set_char_width(9); crtc.set_update_row_callback(FUNC(qvt6800_state::update_row), this); }
void ojankohs_state::ojankoc(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, 8000000/2); /* 4.00 MHz */ m_maincpu->set_addrmap(AS_PROGRAM, &ojankohs_state::ojankoc_map); m_maincpu->set_addrmap(AS_IO, &ojankohs_state::ojankoc_io_map); m_maincpu->set_vblank_int("screen", FUNC(ojankohs_state::irq0_line_hold)); MCFG_MACHINE_START_OVERRIDE(ojankohs_state,ojankoc) NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); /* video hardware */ SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_refresh_hz(60); m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); m_screen->set_size(32*8, 32*8); m_screen->set_visarea(0, 256-1, 8, 248-1); m_screen->set_screen_update(FUNC(ojankohs_state::screen_update_ojankoc)); m_screen->set_palette(m_palette); PALETTE(config, m_palette).set_entries(16); MCFG_VIDEO_START_OVERRIDE(ojankohs_state,ojankoc) /* sound hardware */ SPEAKER(config, "mono").front_center(); ay8910_device &aysnd(AY8910(config, "aysnd", 8000000/4)); aysnd.port_a_read_callback().set_ioport("dsw1"); aysnd.port_b_read_callback().set_ioport("dsw2"); aysnd.add_route(ALL_OUTPUTS, "mono", 0.15); MSM5205(config, m_msm, 8000000/22); m_msm->vck_legacy_callback().set(FUNC(ojankohs_state::ojankohs_adpcm_int)); /* IRQ handler */ m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 KHz */ m_msm->add_route(ALL_OUTPUTS, "mono", 0.50); }
GFXDECODE_END /************************* * Machine Drivers * *************************/ void gatron_state::gat(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, CPU_CLOCK); m_maincpu->set_addrmap(AS_PROGRAM, &gatron_state::gat_map); m_maincpu->set_addrmap(AS_IO, &gatron_state::gat_portmap); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); i8255_device &ppi(I8255A(config, "ppi8255")); ppi.in_pa_callback().set_ioport("IN0"); ppi.in_pb_callback().set_ioport("IN1"); ppi.out_pc_callback().set(FUNC(gatron_state::output_port_1_w)); /* video hardware */ 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(48*8, 16*16); screen.set_visarea(0*8, 48*8-1, 0*8, 16*16-1); screen.set_screen_update(FUNC(gatron_state::screen_update)); screen.set_palette("palette"); screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI); GFXDECODE(config, m_gfxdecode, "palette", gfx_gat); PALETTE(config, "palette").set_entries(8); /* sound hardware */ SPEAKER(config, "mono").front_center(); SN76489(config, "snsnd", MASTER_CLOCK/8).add_route(ALL_OUTPUTS, "mono", 2.00); // Present in Bingo PCB. Clock need to be verified. }
void sigmab52_state::jwildb52(machine_config &config) { /* basic machine hardware */ MC6809(config, m_maincpu, XTAL(8'000'000)); m_maincpu->set_addrmap(AS_PROGRAM, &sigmab52_state::jwildb52_map); MC6809(config, m_audiocpu, XTAL(8'000'000)); m_audiocpu->set_addrmap(AS_PROGRAM, &sigmab52_state::sound_prog_map); ptm6840_device &ptm1(PTM6840(config, "6840ptm_1", XTAL(8'000'000) / 8)); // FIXME ptm1.irq_callback().set_inputline("maincpu", M6809_IRQ_LINE); PTM6840(config, m_6840ptm_2, XTAL(8'000'000) / 8); // FIXME m_6840ptm_2->irq_callback().set(FUNC(sigmab52_state::ptm2_irq)); NVRAM(config, "nvram", nvram_device::DEFAULT_NONE); 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(1024, 1024); screen.set_visarea(0, 544-1, 0, 436-1); screen.set_screen_update("hd63484", FUNC(hd63484_device::update_screen)); screen.set_palette(m_palette); HD63484(config, "hd63484", XTAL(8'000'000)).set_addrmap(0, &sigmab52_state::jwildb52_hd63484_map); PALETTE(config, m_palette).set_entries(16); /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, "soundlatch"); YM3812(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 1.0); }
GFXDECODE_END void hitpoker_state::hitpoker(machine_config &config) { MC68HC11(config, m_maincpu, 1000000); m_maincpu->set_addrmap(AS_PROGRAM, &hitpoker_state::hitpoker_map); m_maincpu->set_addrmap(AS_IO, &hitpoker_state::hitpoker_io); m_maincpu->set_config(0, 0x100, 0x01); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(60); screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate screen.set_size(648, 480); //setted by the CRTC screen.set_visarea(0, 648-1, 0, 240-1); screen.set_screen_update(FUNC(hitpoker_state::screen_update_hitpoker)); screen.set_palette(m_palette); h46505_device &crtc(H46505(config, "crtc", CRTC_CLOCK/2)); /* hand tuned to get ~60 fps */ crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); crtc.out_vsync_callback().set(FUNC(hitpoker_state::hitpoker_irq)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_hitpoker); PALETTE(config, m_palette).set_entries(0x800); SPEAKER(config, "mono").front_center(); ym2149_device &aysnd(YM2149(config, "aysnd", 1500000)); aysnd.port_a_read_callback().set_ioport("DSW1"); aysnd.port_b_read_callback().set_ioport("DSW2"); aysnd.add_route(ALL_OUTPUTS, "mono", 0.50); }
void hp48_state::hp48_common(machine_config &config) { /* cpu */ SATURN(config, m_maincpu, 3937007); /* almost 4 MHz */ m_maincpu->set_addrmap(AS_PROGRAM, &hp48_state::hp48); m_maincpu->out_func().set(FUNC(hp48_state::reg_out)); m_maincpu->in_func().set(FUNC(hp48_state::reg_in)); m_maincpu->reset_func().set(FUNC(hp48_state::mem_reset)); m_maincpu->config_func().set(FUNC(hp48_state::mem_config)); m_maincpu->unconfig_func().set(FUNC(hp48_state::mem_unconfig)); m_maincpu->id_func().set(FUNC(hp48_state::mem_id)); m_maincpu->crc_func().set(FUNC(hp48_state::mem_crc)); m_maincpu->rsi_func().set(FUNC(hp48_state::rsi)); /* memory */ NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); /* video */ SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_refresh_hz(64); m_screen->set_vblank_time(0); m_screen->set_size(131, 64); m_screen->set_visarea(0, 130, 0, 63); m_screen->set_screen_update(FUNC(hp48_state::screen_update_hp48)); m_screen->set_palette(m_palette); /* monochrome, but with varying contrast and grayscale */ PALETTE(config, m_palette, 256).set_init(FUNC(hp48_state::palette_init_hp48)); /* sound */ SPEAKER(config, "speaker").front_center(); DAC_1BIT(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.5); voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0)); vref.set_output(5.0); vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); }
void by133_state::babypac(machine_config &config) { /* basic machine hardware */ M6800(config, m_maincpu, XTAL(3'579'545)/4); // no xtal, just 2 chips m_maincpu->set_addrmap(AS_PROGRAM, &by133_state::main_map); MC6809(config, m_videocpu, XTAL(3'579'545)); m_videocpu->set_addrmap(AS_PROGRAM, &by133_state::video_map); M6803(config, m_audiocpu, XTAL(3'579'545)); m_audiocpu->set_addrmap(AS_PROGRAM, &by133_state::sound_map); m_audiocpu->out_p1_cb().set("dac", FUNC(dac_byte_interface::data_w)); // P10-P17 m_audiocpu->in_p2_cb().set(FUNC(by133_state::m6803_port2_r)); // P20-P24 sound command in m_audiocpu->out_p2_cb().set(FUNC(by133_state::m6803_port2_w)); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); PIA6821(config, m_pia_u7, 0); m_pia_u7->readpa_handler().set(FUNC(by133_state::u7_a_r)); m_pia_u7->writepa_handler().set(FUNC(by133_state::u7_a_w)); m_pia_u7->readpb_handler().set(FUNC(by133_state::u7_b_r)); m_pia_u7->writepb_handler().set(FUNC(by133_state::u7_b_w)); m_pia_u7->ca2_handler().set(FUNC(by133_state::u7_ca2_w)); m_pia_u7->cb2_handler().set(FUNC(by133_state::u7_cb2_w)); m_pia_u7->irqa_handler().set_inputline("videocpu", M6809_FIRQ_LINE); m_pia_u7->irqa_handler().set_inputline("videocpu", M6809_FIRQ_LINE); PIA6821(config, m_pia_u10, 0); m_pia_u10->readpa_handler().set(FUNC(by133_state::u10_a_r)); m_pia_u10->writepa_handler().set(FUNC(by133_state::u10_a_w)); m_pia_u10->readpb_handler().set(FUNC(by133_state::u10_b_r)); m_pia_u10->writepb_handler().set(FUNC(by133_state::u10_b_w)); m_pia_u10->ca2_handler().set(FUNC(by133_state::u10_ca2_w)); m_pia_u10->cb2_handler().set(FUNC(by133_state::u10_cb2_w)); m_pia_u10->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE); m_pia_u10->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE); TIMER(config, "babypac1").configure_periodic(FUNC(by133_state::u10_timer), attotime::from_hz(120)); // mains freq*2 PIA6821(config, m_pia_u11, 0); m_pia_u11->readpa_handler().set(FUNC(by133_state::u11_a_r)); m_pia_u11->writepa_handler().set(FUNC(by133_state::u11_a_w)); m_pia_u11->readpb_handler().set(FUNC(by133_state::u11_b_r)); m_pia_u11->writepb_handler().set(FUNC(by133_state::u11_b_w)); m_pia_u11->ca2_handler().set(FUNC(by133_state::u11_ca2_w)); m_pia_u11->cb2_handler().set(FUNC(by133_state::u11_cb2_w)); m_pia_u11->irqa_handler().set_inputline("maincpu", M6800_IRQ_LINE); m_pia_u11->irqb_handler().set_inputline("maincpu", M6800_IRQ_LINE); TIMER(config, "babypac2").configure_periodic(FUNC(by133_state::u11_timer), attotime::from_hz(634)); // 555 timer*2 /* video hardware */ TMS9928A(config, m_crtc, XTAL(10'738'635)).set_screen("screen"); m_crtc->set_vram_size(0x4000); m_crtc->int_callback().set_inputline(m_videocpu, M6809_IRQ_LINE); SCREEN(config, "screen", SCREEN_TYPE_RASTER); /* sound hardware */ SPEAKER(config, "speaker").front_center(); ZN429E(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // U32 (Vidiot) or U6 (Cheap Squeak) voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref")); vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); SPEAKER(config, "beee").front_center(); BEEP(config, m_beep, 600).add_route(ALL_OUTPUTS, "beee", 0.10); }
void s6_state::s6(machine_config &config) { /* basic machine hardware */ M6808(config, m_maincpu, 3580000); // 6802 or 6808 could be used here m_maincpu->set_addrmap(AS_PROGRAM, &s6_state::s6_main_map); MCFG_MACHINE_RESET_OVERRIDE(s6_state, s6) /* Video */ config.set_default_layout(layout_s6); /* Sound */ genpin_audio(config); /* Devices */ PIA6821(config, m_pia22, 0); m_pia22->writepa_handler().set(FUNC(s6_state::sol0_w)); m_pia22->writepb_handler().set(FUNC(s6_state::sol1_w)); m_pia22->ca2_handler().set(FUNC(s6_state::pia22_ca2_w)); m_pia22->cb2_handler().set(FUNC(s6_state::pia22_cb2_w)); m_pia22->irqa_handler().set(FUNC(s6_state::pia_irq)); m_pia22->irqb_handler().set(FUNC(s6_state::pia_irq)); PIA6821(config, m_pia24, 0); m_pia24->writepa_handler().set(FUNC(s6_state::lamp0_w)); m_pia24->writepb_handler().set(FUNC(s6_state::lamp1_w)); m_pia24->ca2_handler().set(FUNC(s6_state::pia24_ca2_w)); m_pia24->cb2_handler().set(FUNC(s6_state::pia24_cb2_w)); m_pia24->irqa_handler().set(FUNC(s6_state::pia_irq)); m_pia24->irqb_handler().set(FUNC(s6_state::pia_irq)); PIA6821(config, m_pia28, 0); m_pia28->readpa_handler().set(FUNC(s6_state::dips_r)); m_pia28->writepa_handler().set(FUNC(s6_state::dig0_w)); m_pia28->writepb_handler().set(FUNC(s6_state::dig1_w)); m_pia28->ca2_handler().set(FUNC(s6_state::pia28_ca2_w)); m_pia28->cb2_handler().set(FUNC(s6_state::pia28_cb2_w)); m_pia28->irqa_handler().set(FUNC(s6_state::pia_irq)); m_pia28->irqb_handler().set(FUNC(s6_state::pia_irq)); PIA6821(config, m_pia30, 0); m_pia30->readpa_handler().set(FUNC(s6_state::switch_r)); m_pia30->writepb_handler().set(FUNC(s6_state::switch_w)); m_pia30->ca2_handler().set(FUNC(s6_state::pia30_ca2_w)); m_pia30->cb2_handler().set(FUNC(s6_state::pia30_cb2_w)); m_pia30->irqa_handler().set(FUNC(s6_state::pia_irq)); m_pia30->irqb_handler().set(FUNC(s6_state::pia_irq)); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); /* Add the soundcard */ M6802(config, m_audiocpu, 3580000); m_audiocpu->set_addrmap(AS_PROGRAM, &s6_state::s6_audio_map); SPEAKER(config, "speaker").front_center(); MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.5); voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref")); vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); SPEAKER(config, "speech").front_center(); HC55516(config, m_hc55516, 0).add_route(ALL_OUTPUTS, "speech", 1.00); PIA6821(config, m_pias, 0); m_pias->readpb_handler().set(FUNC(s6_state::sound_r)); m_pias->writepa_handler().set("dac", FUNC(dac_byte_interface::data_w)); m_pias->ca2_handler().set(m_hc55516, FUNC(hc55516_device::digit_w)); m_pias->cb2_handler().set(m_hc55516, FUNC(hc55516_device::clock_w)); m_pias->irqa_handler().set_inputline(m_audiocpu, M6802_IRQ_LINE); // FIXME: needs an input merger m_pias->irqb_handler().set_inputline(m_audiocpu, M6802_IRQ_LINE); }
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 witch_state::witch(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, CPU_CLOCK); /* 3 MHz */ m_maincpu->set_addrmap(AS_PROGRAM, &witch_state::witch_main_map); m_maincpu->set_vblank_int("screen", FUNC(witch_state::irq0_line_assert)); /* 2nd z80 */ Z80(config, m_subcpu, CPU_CLOCK); /* 3 MHz */ m_subcpu->set_addrmap(AS_PROGRAM, &witch_state::witch_sub_map); m_subcpu->set_vblank_int("screen", FUNC(witch_state::irq0_line_assert)); config.m_minimum_quantum = attotime::from_hz(6000); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); TICKET_DISPENSER(config, m_hopper, attotime::from_msec(HOPPER_PULSE), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH); // 82C255 (actual chip on PCB) is equivalent to two 8255s I8255(config, m_ppi[0]); m_ppi[0]->in_pa_callback().set(FUNC(witch_state::read_a000)); m_ppi[0]->in_pb_callback().set_ioport("UNK"); m_ppi[0]->out_pc_callback().set(FUNC(witch_state::write_a002)); I8255(config, m_ppi[1]); m_ppi[1]->in_pa_callback().set_ioport("A004"); m_ppi[1]->in_pb_callback().set_ioport("A005"); m_ppi[1]->out_pc_callback().set(FUNC(witch_state::write_a006)); /* video hardware */ 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(256, 256); screen.set_visarea(8, 256-1-8, 8*4, 256-8*4-1); screen.set_screen_update(FUNC(witch_state::screen_update)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_witch); PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x800); /* sound hardware */ SPEAKER(config, "mono").front_center(); es8712_device &essnd(ES8712(config, "essnd", 0)); essnd.msm_write_handler().set("msm", FUNC(msm5205_device::data_w)); essnd.set_msm_tag("msm"); msm5205_device &msm(MSM5205(config, "msm", MSM5202_CLOCK)); /* actually MSM5202 */ msm.vck_legacy_callback().set("essnd", FUNC(es8712_device::msm_int)); msm.set_prescaler_selector(msm5205_device::S48_4B); /* 8 kHz */ msm.add_route(ALL_OUTPUTS, "mono", 1.0); ym2203_device &ym1(YM2203(config, "ym1", YM2203_CLOCK)); /* 3 MHz */ ym1.port_a_read_callback().set_ioport("YM_PortA"); ym1.port_b_read_callback().set_ioport("YM_PortB"); ym1.add_route(ALL_OUTPUTS, "mono", 0.5); ym2203_device &ym2(YM2203(config, "ym2", YM2203_CLOCK)); /* 3 MHz */ ym2.port_a_write_callback().set(FUNC(witch_state::xscroll_w)); ym2.port_b_write_callback().set(FUNC(witch_state::yscroll_w)); ym2.add_route(ALL_OUTPUTS, "mono", 0.5); }
void mrgame_state::mrgame(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, 6_MHz_XTAL); m_maincpu->set_addrmap(AS_PROGRAM, &mrgame_state::main_map); m_maincpu->set_periodic_int(FUNC(mrgame_state::irq1_line_hold), attotime::from_hz(183)); Z80(config, m_videocpu, 18.432_MHz_XTAL / 6); m_videocpu->set_addrmap(AS_PROGRAM, &mrgame_state::video_map); Z80(config, m_audiocpu1, 4_MHz_XTAL); m_audiocpu1->set_addrmap(AS_PROGRAM, &mrgame_state::audio1_map); m_audiocpu1->set_addrmap(AS_IO, &mrgame_state::audio1_io); Z80(config, m_audiocpu2, 4_MHz_XTAL); m_audiocpu2->set_addrmap(AS_PROGRAM, &mrgame_state::audio2_map); m_audiocpu2->set_addrmap(AS_IO, &mrgame_state::audio2_io); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // 5564 (x2) + battery LS259(config, m_selectlatch); // 5B m_selectlatch->q_out_cb<0>().set(FUNC(mrgame_state::video_a11_w)); m_selectlatch->q_out_cb<1>().set(FUNC(mrgame_state::nmi_intst_w)); m_selectlatch->q_out_cb<3>().set(FUNC(mrgame_state::video_a12_w)); m_selectlatch->q_out_cb<4>().set(FUNC(mrgame_state::video_a13_w)); m_selectlatch->q_out_cb<6>().set(FUNC(mrgame_state::flip_w)); //watchdog_timer_device &watchdog(WATCHDOG_TIMER(config, "watchdog")); // LS393 at 5D (video board) driven by VBLANK //watchdog.set_vblank_count("screen", 8); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_raw(18.432_MHz_XTAL / 3, 384, 0, 256, 264, 8, 248); // If you align with X on test screen some info is chopped off screen.set_screen_update(FUNC(mrgame_state::screen_update_mrgame)); screen.set_palette(m_palette); screen.screen_vblank().set(FUNC(mrgame_state::vblank_nmi_w)); PALETTE(config, m_palette, FUNC(mrgame_state::mrgame_palette), 64); GFXDECODE(config, m_gfxdecode, m_palette, gfx_mrgame); /* Sound */ SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); DAC_8BIT_R2R(config, "ldac", 0).add_route(ALL_OUTPUTS, "lspeaker", 0.25); // unknown DAC DAC_8BIT_R2R(config, "rdac", 0).add_route(ALL_OUTPUTS, "rspeaker", 0.25); // unknown DAC dac_8bit_r2r_device &dacvol(DAC_8BIT_R2R(config, "dacvol", 0)); // unknown DAC dacvol.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT); dacvol.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT); dacvol.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT); dacvol.add_route(0, "rdac", -1.0, DAC_VREF_NEG_INPUT); voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0)); vref.set_output(5.0); vref.add_route(0, "dacvol", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dacvol", -1.0, DAC_VREF_NEG_INPUT); tms5220_device &tms(TMS5220(config, "tms", 672000)); // uses a RC combination. 672k copied from jedi.h tms.ready_cb().set_inputline("audiocpu2", Z80_INPUT_LINE_BOGUSWAIT); tms.add_route(ALL_OUTPUTS, "lspeaker", 1.0); tms.add_route(ALL_OUTPUTS, "rspeaker", 1.0); /* Devices */ TIMER(config, "irq_timer").configure_periodic(FUNC(mrgame_state::irq_timer), attotime::from_hz(16000)); //ugh i8255_device &ppi(I8255A(config, "ppi")); ppi.in_pa_callback().set(FUNC(mrgame_state::porta_r)); ppi.out_pb_callback().set(FUNC(mrgame_state::portb_w)); ppi.in_pc_callback().set(FUNC(mrgame_state::portc_r)); }