INPUT_PORTS_END void madalien_state::madalien(machine_config &config) { /* main CPU */ M6502(config, m_maincpu, MADALIEN_MAIN_CLOCK / 8); /* 1324kHz */ m_maincpu->set_addrmap(AS_PROGRAM, &madalien_state::main_map); M6502(config, m_audiocpu, SOUND_CLOCK / 8); /* 512kHz */ m_audiocpu->set_addrmap(AS_PROGRAM, &madalien_state::audio_map); /* video hardware */ madalien_video(config); /* audio hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0); // 7400 at 3A used as R/S latch GENERIC_LATCH_8(config, m_soundlatch2); ay8910_device &aysnd(AY8910(config, "aysnd", SOUND_CLOCK / 4)); aysnd.port_a_write_callback().set(FUNC(madalien_state::madalien_portA_w)); aysnd.port_b_write_callback().set(FUNC(madalien_state::madalien_portB_w)); aysnd.add_route(0, "discrete", 1.0, 0); aysnd.add_route(1, "discrete", 1.0, 1); aysnd.add_route(2, "discrete", 1.0, 2); DISCRETE(config, m_discrete, madalien_discrete).add_route(ALL_OUTPUTS, "mono", 1.0); }
/* Note: lsasquad clock values are not verified */ void lsasquad_state::lsasquad(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, MASTER_CLOCK / 4); m_maincpu->set_addrmap(AS_PROGRAM, &lsasquad_state::lsasquad_map); m_maincpu->set_vblank_int("screen", FUNC(lsasquad_state::irq0_line_hold)); Z80(config, m_audiocpu, MASTER_CLOCK / 8); m_audiocpu->set_addrmap(AS_PROGRAM, &lsasquad_state::lsasquad_sound_map); /* IRQs are triggered by the YM2203 */ TAITO68705_MCU(config, m_bmcu, MASTER_CLOCK / 8); config.m_minimum_quantum = attotime::from_hz(30000); /* 500 CPU slices per frame - a high value to ensure proper */ /* synchronization of the CPUs */ /* main<->sound synchronization depends on this */ MCFG_MACHINE_START_OVERRIDE(lsasquad_state,lsasquad) MCFG_MACHINE_RESET_OVERRIDE(lsasquad_state,lsasquad) GENERIC_LATCH_8(config, m_soundlatch); m_soundlatch->data_pending_callback().set("soundnmi", FUNC(input_merger_device::in_w<0>)); INPUT_MERGER_ALL_HIGH(config, "soundnmi").output_handler().set_inputline(m_audiocpu, INPUT_LINE_NMI); GENERIC_LATCH_8(config, m_soundlatch2); /* 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(32*8, 32*8); screen.set_visarea(0, 32*8-1, 2*8, 30*8-1); screen.set_screen_update(FUNC(lsasquad_state::screen_update_lsasquad)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_lsasquad); PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 512); /* sound hardware */ SPEAKER(config, "mono").front_center(); YM2149(config, "aysnd", MASTER_CLOCK / 8).add_route(ALL_OUTPUTS, "mono", 0.12); ym2203_device &ymsnd(YM2203(config, "ymsnd", MASTER_CLOCK / 8)); ymsnd.irq_handler().set_inputline(m_audiocpu, 0); ymsnd.port_a_write_callback().set(FUNC(lsasquad_state::unk)); ymsnd.port_b_write_callback().set(FUNC(lsasquad_state::unk)); ymsnd.add_route(0, "mono", 0.12); ymsnd.add_route(1, "mono", 0.12); ymsnd.add_route(2, "mono", 0.12); ymsnd.add_route(3, "mono", 0.63); }
void aha1542a_device::device_add_mconfig(machine_config &config) { i8085a_cpu_device &localcpu(I8085A(config, m_localcpu, 10'000'000)); localcpu.set_addrmap(AS_PROGRAM, &aha1542a_device::i8085_map); generic_latch_8_device &fromhost(GENERIC_LATCH_8(config, "fromhost")); fromhost.data_pending_callback().set_inputline(m_localcpu, I8085_RST55_LINE); GENERIC_LATCH_8(config, "tohost"); scsi_add(config); DP8473(config, m_fdc, 24_MHz_XTAL); }
void _1942p_state::_1942p(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, MAIN_CPU_CLOCK_1942P); /* 4 MHz - verified on PCB */ m_maincpu->set_addrmap(AS_PROGRAM, &_1942p_state::_1942p_map); m_maincpu->set_vblank_int("screen", FUNC(_1942p_state::irq0_line_hold)); // note, powerups won't move down the screen with the original '1942' logic. Z80(config, m_audiocpu, SOUND_CPU_CLOCK_1942P); /* 4 MHz - verified on PCB */ m_audiocpu->set_addrmap(AS_PROGRAM, &_1942p_state::_1942p_sound_map); m_audiocpu->set_addrmap(AS_IO, &_1942p_state::_1942p_sound_io); m_audiocpu->set_periodic_int(FUNC(_1942p_state::irq0_line_hold), attotime::from_hz(4*60)); /* video hardware */ GFXDECODE(config, m_gfxdecode, m_palette, gfx_1942p); PALETTE(config, m_palette, FUNC(_1942p_state::_1942p_palette), 0x500, 0x400); 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(32*8, 32*8); screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); screen.set_screen_update(FUNC(_1942p_state::screen_update)); screen.set_palette(m_palette); /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI); AY8910(config, "ay1", AUDIO_CLOCK_1942P).add_route(ALL_OUTPUTS, "mono", 0.25); // 1.25 MHz - verified on PCB AY8910(config, "ay2", AUDIO_CLOCK_1942P).add_route(ALL_OUTPUTS, "mono", 0.25); // 1.25 MHz - verified on PCB }
void goindol_state::goindol(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, XTAL(12'000'000)/2); /* XTAL confirmed, divisor is not */ m_maincpu->set_addrmap(AS_PROGRAM, &goindol_state::goindol_map); m_maincpu->set_vblank_int("screen", FUNC(goindol_state::irq0_line_hold)); z80_device &audiocpu(Z80(config, "audiocpu", XTAL(12'000'000)/2)); /* XTAL confirmed, divisor is not */ audiocpu.set_addrmap(AS_PROGRAM, &goindol_state::sound_map); audiocpu.set_periodic_int(FUNC(goindol_state::irq0_line_hold), attotime::from_hz(4*60)); /* 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(32*8, 32*8); screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); screen.set_screen_update(FUNC(goindol_state::screen_update_goindol)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_goindol); PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256); /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, "soundlatch"); YM2203(config, "ymsnd", XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.25); /* Confirmed pitch from recording */ }
void megazone_state::megazone(machine_config &config) { /* basic machine hardware */ KONAMI1(config, m_maincpu, XTAL(18'432'000)/9); /* 2.048 MHz */ m_maincpu->set_addrmap(AS_PROGRAM, &megazone_state::megazone_map); Z80(config, m_audiocpu, XTAL(18'432'000)/6); /* Z80 Clock is derived from the H1 signal */ m_audiocpu->set_addrmap(AS_PROGRAM, &megazone_state::megazone_sound_map); m_audiocpu->set_addrmap(AS_IO, &megazone_state::megazone_sound_io_map); I8039(config, m_daccpu, XTAL(14'318'181)/2); /* 7.15909MHz */ m_daccpu->set_addrmap(AS_PROGRAM, &megazone_state::megazone_i8039_map); m_daccpu->set_addrmap(AS_IO, &megazone_state::megazone_i8039_io_map); m_daccpu->p1_out_cb().set("dac", FUNC(dac_byte_interface::data_w)); m_daccpu->p2_out_cb().set(FUNC(megazone_state::i8039_irqen_and_status_w)); config.m_minimum_quantum = attotime::from_hz(900); ls259_device &mainlatch(LS259(config, "mainlatch")); // 13A mainlatch.q_out_cb<0>().set(FUNC(megazone_state::coin_counter_2_w)); mainlatch.q_out_cb<1>().set(FUNC(megazone_state::coin_counter_1_w)); mainlatch.q_out_cb<5>().set(FUNC(megazone_state::flipscreen_w)); mainlatch.q_out_cb<7>().set(FUNC(megazone_state::irq_mask_w)); 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(36*8, 32*8); screen.set_visarea(0*8, 36*8-1, 2*8, 30*8-1); screen.set_screen_update(FUNC(megazone_state::screen_update_megazone)); screen.set_palette(m_palette); screen.screen_vblank().set(FUNC(megazone_state::vblank_irq)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_megazone); PALETTE(config, m_palette, FUNC(megazone_state::megazone_palette), 16*16+16*16, 32); /* sound hardware */ SPEAKER(config, "speaker").front_center(); GENERIC_LATCH_8(config, "soundlatch"); ay8910_device &aysnd(AY8910(config, "aysnd", XTAL(14'318'181)/8)); aysnd.port_a_read_callback().set(FUNC(megazone_state::megazone_port_a_r)); aysnd.port_b_write_callback().set(FUNC(megazone_state::megazone_port_b_w)); aysnd.add_route(0, "filter.0.0", 0.30); aysnd.add_route(1, "filter.0.1", 0.30); aysnd.add_route(2, "filter.0.2", 0.30); DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC 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); FILTER_RC(config, m_filter[0]).add_route(ALL_OUTPUTS, "speaker", 1.0); FILTER_RC(config, m_filter[1]).add_route(ALL_OUTPUTS, "speaker", 1.0); FILTER_RC(config, m_filter[2]).add_route(ALL_OUTPUTS, "speaker", 1.0); }
void blockout_state::blockout(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, MAIN_CLOCK); /* MRH - 8.76 makes gfx/adpcm samples sync better -- but 10 is correct speed*/ m_maincpu->set_addrmap(AS_PROGRAM, &blockout_state::main_map); TIMER(config, "scantimer").configure_scanline(FUNC(blockout_state::blockout_scanline), "screen", 0, 1); Z80(config, m_audiocpu, AUDIO_CLOCK); /* 3.579545 MHz */ m_audiocpu->set_addrmap(AS_PROGRAM, &blockout_state::audio_map); /* video hardware */ SCREEN(config, m_screen, SCREEN_TYPE_RASTER); /* assume same as ddragon3 with adjusted visible display area */ m_screen->set_raw(XTAL(28'000'000) / 4, 448, 0, 320, 272, 10, 250); m_screen->set_screen_update(FUNC(blockout_state::screen_update)); m_screen->set_palette(m_palette); PALETTE(config, m_palette).set_format(2, &blockout_state::blockout_xBGR_444, 513); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); GENERIC_LATCH_8(config, m_soundlatch); m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI); ym2151_device &ymsnd(YM2151(config, "ymsnd", AUDIO_CLOCK)); ymsnd.irq_handler().set(FUNC(blockout_state::irq_handler)); ymsnd.add_route(0, "lspeaker", 0.60); ymsnd.add_route(1, "rspeaker", 0.60); okim6295_device &oki(OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH)); oki.add_route(ALL_OUTPUTS, "lspeaker", 0.50); oki.add_route(ALL_OUTPUTS, "rspeaker", 0.50); }
void prehisle_state::prehisle(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, XTAL(18'000'000)/2); /* verified on pcb */ m_maincpu->set_addrmap(AS_PROGRAM, &prehisle_state::prehisle_map); m_maincpu->set_vblank_int("screen", FUNC(prehisle_state::irq4_line_hold)); Z80(config, m_audiocpu, XTAL(4'000'000)); /* verified on pcb */ m_audiocpu->set_addrmap(AS_PROGRAM, &prehisle_state::prehisle_sound_map); m_audiocpu->set_addrmap(AS_IO, &prehisle_state::prehisle_sound_io_map); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); // the screen parameters are guessed but should be accurate. They // give a theoretical refresh rate of 59.1856Hz while the measured // rate on a snk68.c with very similar hardware board is 59.16Hz. screen.set_raw(XTAL(24'000'000)/4, 384, 0, 256, 264, 16, 240); screen.set_screen_update(FUNC(prehisle_state::screen_update)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_prehisle); PALETTE(config, m_palette).set_format(palette_device::RGBx_444, 1024); /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); ym3812_device &ymsnd(YM3812(config, "ymsnd", XTAL(4'000'000))); /* verified on pcb */ ymsnd.irq_handler().set_inputline(m_audiocpu, 0); ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0); UPD7759(config, m_upd7759); m_upd7759->add_route(ALL_OUTPUTS, "mono", 0.90); }
void zerozone_state::zerozone(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, 10000000); /* 10 MHz */ m_maincpu->set_addrmap(AS_PROGRAM, &zerozone_state::main_map); Z80(config, m_audiocpu, 1000000); /* 1 MHz ??? */ m_audiocpu->set_addrmap(AS_PROGRAM, &zerozone_state::sound_map); config.m_minimum_quantum = attotime::from_hz(600); /* 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(1*8, 47*8-1, 2*8, 30*8-1); screen.set_palette("palette"); screen.set_screen_update(FUNC(zerozone_state::screen_update)); screen.screen_vblank().set(FUNC(zerozone_state::vblank_w)); GFXDECODE(config, m_gfxdecode, "palette", gfx_zerozone); PALETTE(config, "palette").set_format(palette_device::RRRRGGGGBBBBRGBx, 256); /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); okim6295_device &oki(OKIM6295(config, "oki", 1056000, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified oki.add_route(ALL_OUTPUTS, "mono", 1.0); }
void sliver_state::sliver(machine_config &config) { M68000(config, m_maincpu, 12000000); m_maincpu->set_addrmap(AS_PROGRAM, &sliver_state::sliver_map); m_maincpu->set_vblank_int("screen", FUNC(sliver_state::irq4_line_hold)); TIMER(config, "obj_actel").configure_periodic(FUNC(sliver_state::obj_irq_cb), attotime::from_hz(60)); /* unknown clock, causes "obj actel ready error" without this */ // irq 2 valid but not used? I8051(config, m_audiocpu, 8000000); m_audiocpu->set_addrmap(AS_PROGRAM, &sliver_state::soundmem_prg); m_audiocpu->set_addrmap(AS_IO, &sliver_state::soundmem_io); m_audiocpu->port_out_cb<1>().set(FUNC(sliver_state::oki_setbank)); SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_refresh_hz(60); m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); m_screen->set_size(64*8, 32*8); m_screen->set_visarea(0*8, 384-1-16, 0*8, 240-1); m_screen->set_screen_update(FUNC(sliver_state::screen_update)); PALETTE(config, "palette").set_entries(0x100); ramdac_device &ramdac(RAMDAC(config, "ramdac", 0, "palette")); ramdac.set_addrmap(0, &sliver_state::ramdac_map); SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); GENERIC_LATCH_8(config, m_soundlatch); okim6295_device &oki(OKIM6295(config, "oki", 1000000, okim6295_device::PIN7_HIGH)); oki.set_addrmap(0, &sliver_state::oki_map); oki.add_route(ALL_OUTPUTS, "lspeaker", 0.6); oki.add_route(ALL_OUTPUTS, "rspeaker", 0.6); }
void zodiack_state::zodiack(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, XTAL(18'432'000)/6); m_maincpu->set_addrmap(AS_PROGRAM, &zodiack_state::main_map); m_maincpu->set_vblank_int("videopcb:screen", FUNC(zodiack_state::zodiack_main_nmi_gen)); m_maincpu->set_periodic_int(FUNC(zodiack_state::irq0_line_hold), attotime::from_hz(1*60)); // sound related - unknown source, timing is guessed Z80(config, m_audiocpu, XTAL(18'432'000)/6); m_audiocpu->set_addrmap(AS_PROGRAM, &zodiack_state::sound_map); m_audiocpu->set_addrmap(AS_IO, &zodiack_state::io_map); m_audiocpu->set_periodic_int(FUNC(zodiack_state::zodiack_sound_nmi_gen), attotime::from_hz(8*60)); // sound tempo - unknown source, timing is guessed WATCHDOG_TIMER(config, "watchdog"); orca_ovg_40c_device &videopcb(ORCA_OVG_40C(config, "videopcb", 0)); videopcb.set_palette("videopcb:palette"); /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); AY8910(config, "aysnd", XTAL(18'432'000)/12).add_route(ALL_OUTPUTS, "mono", 0.50); }
void powerbls_state::powerbls(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, 12000000); /* 12 MHz */ m_maincpu->set_addrmap(AS_PROGRAM, &powerbls_state::powerbls_map); m_maincpu->set_vblank_int("screen", FUNC(sslam_state::irq2_line_hold)); I80C51(config, m_audiocpu, 12000000); /* 83C751 */ m_audiocpu->port_out_cb<1>().set(FUNC(powerbls_state::playmark_snd_control_w)); m_audiocpu->port_in_cb<3>().set(FUNC(powerbls_state::playmark_snd_command_r)); m_audiocpu->port_out_cb<3>().set(FUNC(powerbls_state::playmark_oki_w)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(58); screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); screen.set_size(64*8, 32*8); screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1); screen.set_screen_update(FUNC(powerbls_state::screen_update)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_powerbls); PALETTE(config, m_palette, 0x200).set_format(PALETTE_FORMAT_RRRRGGGGBBBBRGBx); /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); OKIM6295(config, m_oki, 1000000, okim6295_device::PIN7_HIGH); /* verified on original PCB */ m_oki->add_route(ALL_OUTPUTS, "mono", 0.80); }
void egghunt_state::egghunt(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, 12000000/2); /* 6 MHz ?*/ m_maincpu->set_addrmap(AS_PROGRAM, &egghunt_state::egghunt_map); m_maincpu->set_addrmap(AS_IO, &egghunt_state::io_map); m_maincpu->set_vblank_int("screen", FUNC(egghunt_state::irq0_line_hold)); // or 2 like mitchell.cpp? Z80(config, m_audiocpu, 12000000/2); /* 6 MHz ?*/ m_audiocpu->set_addrmap(AS_PROGRAM, &egghunt_state::sound_map); /* 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(8*8, 56*8-1, 1*8, 31*8-1); screen.set_screen_update(FUNC(egghunt_state::screen_update_egghunt)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_egghunt); PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x400); /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); OKIM6295(config, m_oki, 1056000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // clock frequency & pin 7 not verified }
void wyvernf0_state::wyvernf0(machine_config &config) { // basic machine hardware Z80(config, m_maincpu, 6000000); // ? m_maincpu->set_addrmap(AS_PROGRAM, &wyvernf0_state::wyvernf0_map); m_maincpu->set_vblank_int("screen", FUNC(wyvernf0_state::irq0_line_hold)); Z80(config, m_audiocpu, 4000000); // ? m_audiocpu->set_addrmap(AS_PROGRAM, &wyvernf0_state::sound_map); m_audiocpu->set_periodic_int(FUNC(wyvernf0_state::irq0_line_hold), attotime::from_hz(60*2)); // IRQ generated by ??? (drives music tempo), NMI by main cpu // M68705P5(config, "mcu", 4000000); // ? // config.m_minimum_quantum = attotime::from_hz(6000); // 100 CPU slices per second to synchronize between the MCU and the main CPU // 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(32*8, 32*8); screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); screen.set_screen_update(FUNC(wyvernf0_state::screen_update_wyvernf0)); screen.set_palette("palette"); GFXDECODE(config, m_gfxdecode, m_palette, gfx_wyvernf0); PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 512); m_palette->set_endianness(ENDIANNESS_BIG); // sound hardware SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); // coin, fire, lift-off YM2149(config, "ay1", 3000000).add_route(ALL_OUTPUTS, "mono", 0.25); // YM2149 clock ??, pin 26 ?? // lift-off, explosion (saucers), boss alarm YM2149(config, "ay2", 3000000).add_route(ALL_OUTPUTS, "mono", 0.25); // YM2149 clock ??, pin 26 ?? // music msm5232_device &msm(MSM5232(config, "msm", 2000000)); // ? msm.set_capacitors(0.39e-6, 0.39e-6, 0.39e-6, 0.39e-6, 0.39e-6, 0.39e-6, 0.39e-6, 0.39e-6); /* default 0.39 uF capacitors (not verified) */ msm.add_route(0, "mono", 0.5); // pin 28 2'-1 msm.add_route(1, "mono", 0.5); // pin 29 4'-1 msm.add_route(2, "mono", 0.5); // pin 30 8'-1 msm.add_route(3, "mono", 0.5); // pin 31 16'-1 msm.add_route(4, "mono", 0.5); // pin 36 2'-2 msm.add_route(5, "mono", 0.5); // pin 35 4'-2 msm.add_route(6, "mono", 0.5); // pin 34 8'-2 msm.add_route(7, "mono", 0.5); // pin 33 16'-2 // pin 1 SOLO 8' not mapped // pin 2 SOLO 16' not mapped // pin 22 Noise Output not mapped DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "mono", 0.25); // unknown DAC voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0)); vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); }
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 ladyfrog_state::ladyfrog(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, XTAL(8'000'000)/2); m_maincpu->set_addrmap(AS_PROGRAM, &ladyfrog_state::ladyfrog_map); m_maincpu->set_vblank_int("screen", FUNC(ladyfrog_state::irq0_line_hold)); Z80(config, m_audiocpu, XTAL(8'000'000)/2); m_audiocpu->set_addrmap(AS_PROGRAM, &ladyfrog_state::ladyfrog_sound_map); m_audiocpu->set_periodic_int(FUNC(ladyfrog_state::irq0_line_hold), attotime::from_hz(2*60)); config.m_minimum_quantum = attotime::from_hz(6000); /* 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(32*8, 32*8); // screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); // black borders in ladyfrog gameplay are correct screen.set_raw(XTAL(8'000'000), 510, 0, 256, 262, 2*8, 30*8); // pixel clock appears to run at 8 MHz screen.set_screen_update(FUNC(ladyfrog_state::screen_update_ladyfrog)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_ladyfrog); PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 512); /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); ay8910_device &aysnd(AY8910(config, "aysnd", XTAL(8'000'000)/4)); aysnd.port_a_write_callback().set(FUNC(ladyfrog_state::unk_w)); aysnd.port_b_write_callback().set(FUNC(ladyfrog_state::unk_w)); aysnd.add_route(ALL_OUTPUTS, "mono", 0.15); MSM5232(config, m_msm, XTAL(8'000'000)/4); m_msm->set_capacitors(0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6); m_msm->add_route(0, "mono", 1.0); // pin 28 2'-1 m_msm->add_route(1, "mono", 1.0); // pin 29 4'-1 m_msm->add_route(2, "mono", 1.0); // pin 30 8'-1 m_msm->add_route(3, "mono", 1.0); // pin 31 16'-1 m_msm->add_route(4, "mono", 1.0); // pin 36 2'-2 m_msm->add_route(5, "mono", 1.0); // pin 35 4'-2 m_msm->add_route(6, "mono", 1.0); // pin 34 8'-2 m_msm->add_route(7, "mono", 1.0); // pin 33 16'-2 // pin 1 SOLO 8' not mapped // pin 2 SOLO 16' not mapped // pin 22 Noise Output not mapped DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "mono", 0.25); // unknown DAC voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0)); vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); }
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 _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); }
GFXDECODE_END void psychic5_state::psychic5(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, XTAL(12'000'000)/2); m_maincpu->set_addrmap(AS_PROGRAM, &psychic5_state::psychic5_main_map); TIMER(config, "scantimer").configure_scanline(FUNC(psychic5_state::scanline), "screen", 0, 1); ADDRESS_MAP_BANK(config, "vrambank").set_map(&psychic5_state::psychic5_vrambank_map).set_options(ENDIANNESS_LITTLE, 8, 14, 0x2000); Z80(config, m_audiocpu, XTAL(5'000'000)); m_audiocpu->set_addrmap(AS_PROGRAM, &psychic5_state::psychic5_sound_map); m_audiocpu->set_addrmap(AS_IO, &psychic5_state::psychic5_soundport_map); config.m_minimum_quantum = attotime::from_hz(600); /* Allow time for 2nd cpu to interleave */ MCFG_MACHINE_START_OVERRIDE(psychic5_state,psychic5) /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_raw(XTAL(12'000'000)/2,394, 0, 256, 282, 16, 240); // was 53.8 Hz before, assume same as Bombs Away screen.set_screen_update(FUNC(psychic5_state::screen_update_psychic5)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_psychic5); PALETTE(config, m_palette).set_entries(768); JALECO_BLEND(config, m_blend, 0); MCFG_VIDEO_START_OVERRIDE(psychic5_state,psychic5) MCFG_VIDEO_RESET_OVERRIDE(psychic5_state,psychic5) /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, "soundlatch"); ym2203_device &ym1(YM2203(config, "ym1", XTAL(12'000'000)/8)); ym1.irq_handler().set_inputline(m_audiocpu, 0); ym1.add_route(0, "mono", 0.15); ym1.add_route(1, "mono", 0.15); ym1.add_route(2, "mono", 0.15); ym1.add_route(3, "mono", 0.50); ym2203_device &ym2(YM2203(config, "ym2", XTAL(12'000'000)/8)); ym2.add_route(0, "mono", 0.15); ym2.add_route(1, "mono", 0.15); ym2.add_route(2, "mono", 0.15); ym2.add_route(3, "mono", 0.50); }
void sbasketb_state::sbasketb(machine_config &config) { /* basic machine hardware */ KONAMI1(config, m_maincpu, 1400000); /* 1.400 MHz ??? */ m_maincpu->set_addrmap(AS_PROGRAM, &sbasketb_state::sbasketb_map); Z80(config, m_audiocpu, XTAL(14'318'181) / 4); /* 3.5795 MHz */ m_audiocpu->set_addrmap(AS_PROGRAM, &sbasketb_state::sbasketb_sound_map); ls259_device &mainlatch(LS259(config, "mainlatch")); // B3 mainlatch.q_out_cb<0>().set(FUNC(sbasketb_state::flipscreen_w)); // FLIP mainlatch.q_out_cb<1>().set(FUNC(sbasketb_state::irq_mask_w)); // INTST mainlatch.q_out_cb<2>().set_nop(); // MUT - not used? mainlatch.q_out_cb<3>().set(FUNC(sbasketb_state::coin_counter_1_w)); // COIN 1 mainlatch.q_out_cb<4>().set(FUNC(sbasketb_state::coin_counter_2_w)); // COIN 2 mainlatch.q_out_cb<5>().set(FUNC(sbasketb_state::spriteram_select_w)); // OBJ CHE mainlatch.q_out_cb<6>().set_nop(); // END - not used WATCHDOG_TIMER(config, "watchdog"); /* 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*8, 32*8-1, 2*8, 30*8-1); m_screen->set_screen_update(FUNC(sbasketb_state::screen_update_sbasketb)); m_screen->set_palette(m_palette); m_screen->screen_vblank().set(FUNC(sbasketb_state::vblank_irq)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_sbasketb); PALETTE(config, m_palette, FUNC(sbasketb_state::sbasketb_palette), 16*16+16*16*16, 256); /* sound hardware */ SPEAKER(config, "speaker").front_center(); GENERIC_LATCH_8(config, "soundlatch"); TRACKFLD_AUDIO(config, m_soundbrd, 0, m_audiocpu, m_vlm); DAC_8BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.4); // unknown DAC 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); SN76489(config, m_sn, XTAL(14'318'181) / 8).add_route(ALL_OUTPUTS, "speaker", 1.0); VLM5030(config, m_vlm, XTAL(3'579'545)).add_route(ALL_OUTPUTS, "speaker", 1.0); /* Schematics say 3.58MHz, but board uses 3.579545MHz xtal */ }
GFXDECODE_END /************************************* * * Machine driver * *************************************/ void matmania_state::matmania(machine_config &config) { /* basic machine hardware */ M6502(config, m_maincpu, 1500000); /* 1.5 MHz ???? */ m_maincpu->set_addrmap(AS_PROGRAM, &matmania_state::matmania_map); m_maincpu->set_vblank_int("screen", FUNC(matmania_state::irq0_line_hold)); M6502(config, m_audiocpu, 1200000); /* 1.2 MHz ???? */ m_audiocpu->set_addrmap(AS_PROGRAM, &matmania_state::matmania_sound_map); m_audiocpu->set_periodic_int(FUNC(matmania_state::nmi_line_pulse), attotime::from_hz(15*60)); /* ???? */ config.m_minimum_quantum = attotime::from_hz(6000); /* 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(32*8, 32*8); m_screen->set_visarea(0*8, 32*8-1, 1*8, 31*8-1); m_screen->set_screen_update(FUNC(matmania_state::screen_update_matmania)); m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_matmania); PALETTE(config, m_palette, FUNC(matmania_state::matmania_palette), 64 + 16); /* sound hardware */ SPEAKER(config, "speaker").front_center(); GENERIC_LATCH_8(config, m_soundlatch); AY8910(config, "ay1", 1500000).add_route(ALL_OUTPUTS, "speaker", 0.3); AY8910(config, "ay2", 1500000).add_route(ALL_OUTPUTS, "speaker", 0.3); DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.4); // unknown DAC voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0)); vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); }
void efo_zsu_device::device_add_mconfig(machine_config &config) { z80_device& soundcpu(Z80(config, "soundcpu", 4000000)); soundcpu.set_addrmap(AS_PROGRAM, &efo_zsu_device::zsu_map); soundcpu.set_addrmap(AS_IO, &efo_zsu_device::zsu_io); soundcpu.set_daisy_config(daisy_chain); Z80CTC(config, m_ctc0, 4000000); m_ctc0->intr_callback().set("soundirq", FUNC(input_merger_device::in_w<0>)); m_ctc0->zc_callback<0>().set(FUNC(efo_zsu_device::ctc0_z0_w)); m_ctc0->zc_callback<1>().set(FUNC(efo_zsu_device::ctc0_z1_w)); m_ctc0->zc_callback<2>().set(FUNC(efo_zsu_device::ctc0_z2_w)); Z80CTC(config, m_ctc1, 4000000); m_ctc1->intr_callback().set("soundirq", FUNC(input_merger_device::in_w<1>)); m_ctc1->zc_callback<0>().set(FUNC(efo_zsu_device::ctc1_z0_w)); m_ctc1->zc_callback<1>().set(FUNC(efo_zsu_device::ctc1_z1_w)); m_ctc1->zc_callback<2>().set(FUNC(efo_zsu_device::ctc1_z2_w)); #if 0 // does nothing useful now clock_device &ck1mhz(CLOCK(config, "ck1mhz", 4000000/4); ck1mhz.signal_handler().set(m_ctc1, FUNC(z80ctc_device::trg0)); ck1mhz.signal_handler().append(m_ctc1, FUNC(z80ctc_device::trg1)); ck1mhz.signal_handler().append(m_ctc1, FUNC(z80ctc_device::trg2)); #endif GENERIC_LATCH_8(config, m_soundlatch); m_soundlatch->data_pending_callback().set("soundirq", FUNC(input_merger_device::in_w<2>)); INPUT_MERGER_ANY_HIGH(config, "soundirq").output_handler().set_inputline("soundcpu", INPUT_LINE_IRQ0); // 74HC03 NAND gate SPEAKER(config, "mono").front_center(); ay8910_device &aysnd0(AY8910(config, "aysnd0", 4000000/2)); aysnd0.port_a_write_callback().set_membank("rombank").mask(0x03); aysnd0.add_route(ALL_OUTPUTS, "mono", 0.5); ay8910_device &aysnd1(AY8910(config, "aysnd1", 4000000/2)); aysnd1.port_a_write_callback().set(FUNC(efo_zsu_device::ay1_porta_w)); aysnd1.add_route(ALL_OUTPUTS, "mono", 0.5); CD40105(config, m_fifo, 0); m_fifo->out_ready_cb().set(FUNC(efo_zsu_device::fifo_dor_w)); m_fifo->out_cb().set(m_adpcm, FUNC(msm5205_device::data_w)); MSM5205(config, m_adpcm, 4000000/8).add_route(ALL_OUTPUTS, "mono", 0.50); }
void timelimt_state::timelimt(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, 5000000); /* 5.000 MHz */ m_maincpu->set_addrmap(AS_PROGRAM, &timelimt_state::main_map); m_maincpu->set_addrmap(AS_IO, &timelimt_state::main_io_map); m_maincpu->set_vblank_int("screen", FUNC(timelimt_state::irq)); Z80(config, m_audiocpu, 18432000/6); /* 3.072 MHz */ m_audiocpu->set_addrmap(AS_PROGRAM, &timelimt_state::sound_map); m_audiocpu->set_addrmap(AS_IO, &timelimt_state::sound_io_map); m_audiocpu->set_vblank_int("screen", FUNC(timelimt_state::irq0_line_hold)); /* ? */ config.m_minimum_quantum = attotime::from_hz(3000); ls259_device &mainlatch(LS259(config, "mainlatch")); // IC15 mainlatch.q_out_cb<0>().set(FUNC(timelimt_state::nmi_enable_w)); mainlatch.q_out_cb<2>().set(FUNC(timelimt_state::coin_lockout_w)); mainlatch.q_out_cb<3>().set_inputline(m_audiocpu, INPUT_LINE_RESET).invert(); mainlatch.q_out_cb<6>().set_nop(); // probably flip screen mainlatch.q_out_cb<7>().set_nop(); // probably flip screen 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(32*8, 32*8); screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); screen.set_screen_update(FUNC(timelimt_state::screen_update)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_timelimt); PALETTE(config, m_palette, FUNC(timelimt_state::timelimt_palette), 64+32); /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, "soundlatch"); AY8910(config, "ay1", 18432000/12).add_route(ALL_OUTPUTS, "mono", 0.25); ay8910_device &ay2(AY8910(config, "ay2", 18432000/12)); ay2.port_a_read_callback().set("soundlatch", FUNC(generic_latch_8_device::read)); ay2.add_route(ALL_OUTPUTS, "mono", 0.25); }
void psychic5_state::bombsa(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, XTAL(12'000'000)/2); /* 6 MHz */ m_maincpu->set_addrmap(AS_PROGRAM, &psychic5_state::bombsa_main_map); TIMER(config, "scantimer").configure_scanline(FUNC(psychic5_state::scanline), "screen", 0, 1); ADDRESS_MAP_BANK(config, "vrambank").set_map(&psychic5_state::bombsa_vrambank_map).set_options(ENDIANNESS_LITTLE, 8, 14, 0x2000); Z80(config, m_audiocpu, XTAL(5'000'000)); m_audiocpu->set_addrmap(AS_PROGRAM, &psychic5_state::bombsa_sound_map); m_audiocpu->set_addrmap(AS_IO, &psychic5_state::bombsa_soundport_map); config.m_minimum_quantum = attotime::from_hz(600); MCFG_MACHINE_START_OVERRIDE(psychic5_state,bombsa) /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_raw(XTAL(12'000'000)/2,394, 0, 256, 282, 16, 240); /* Measured as: VSync 54Hz, HSync 15.25kHz */ screen.set_screen_update(FUNC(psychic5_state::screen_update_bombsa)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_bombsa); PALETTE(config, m_palette).set_entries(768); MCFG_VIDEO_START_OVERRIDE(psychic5_state,bombsa) MCFG_VIDEO_RESET_OVERRIDE(psychic5_state,psychic5) /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, "soundlatch"); ym2203_device &ym1(YM2203(config, "ym1", XTAL(12'000'000)/8)); ym1.irq_handler().set_inputline(m_audiocpu, 0); ym1.add_route(0, "mono", 0.30); ym1.add_route(1, "mono", 0.30); ym1.add_route(2, "mono", 0.30); ym1.add_route(3, "mono", 1.0); ym2203_device &ym2(YM2203(config, "ym2", XTAL(12'000'000)/8)); ym2.add_route(0, "mono", 0.30); ym2.add_route(1, "mono", 0.30); ym2.add_route(2, "mono", 0.30); ym2.add_route(3, "mono", 1.0); }
void xain_state::xsleena(machine_config &config) { // basic machine hardware MC6809E(config, m_maincpu, CPU_CLOCK); // 68B09E m_maincpu->set_addrmap(AS_PROGRAM, &xain_state::main_map); TIMER(config, "scantimer").configure_scanline(FUNC(xain_state::scanline), "screen", 0, 1); MC6809E(config, m_subcpu, CPU_CLOCK); // 68B09E m_subcpu->set_addrmap(AS_PROGRAM, &xain_state::cpu_map_B); MC6809(config, m_audiocpu, PIXEL_CLOCK); // 68A09 m_audiocpu->set_addrmap(AS_PROGRAM, &xain_state::sound_map); TAITO68705_MCU(config, m_mcu, MCU_CLOCK); config.m_perfect_cpu_quantum = subtag("maincpu"); // video hardware SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_raw(PIXEL_CLOCK, 384, 0, 256, 272, 8, 248); // based on ddragon driver m_screen->set_screen_update(FUNC(xain_state::screen_update)); m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_xain); PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 512); /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch).data_pending_callback().set_inputline(m_audiocpu, M6809_IRQ_LINE); ym2203_device &ym1(YM2203(config, "ym1", MCU_CLOCK)); ym1.irq_handler().set_inputline(m_audiocpu, M6809_FIRQ_LINE); ym1.add_route(0, "mono", 0.50); ym1.add_route(1, "mono", 0.50); ym1.add_route(2, "mono", 0.50); ym1.add_route(3, "mono", 0.40); ym2203_device &ym2(YM2203(config, "ym2", MCU_CLOCK)); ym2.add_route(0, "mono", 0.50); ym2.add_route(1, "mono", 0.50); ym2.add_route(2, "mono", 0.50); ym2.add_route(3, "mono", 0.40); }
void firetrap_state::firetrap(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, FIRETRAP_XTAL/2); // 6 MHz m_maincpu->set_addrmap(AS_PROGRAM, &firetrap_state::firetrap_map); m_maincpu->set_vblank_int("screen", FUNC(firetrap_state::firetrap_irq)); M6502(config, m_audiocpu, FIRETRAP_XTAL/8); // 1.5 MHz m_audiocpu->set_addrmap(AS_PROGRAM, &firetrap_state::sound_map); /* IRQs are caused by the ADPCM chip */ /* NMIs are caused by the main CPU */ I8751(config, "mcu", XTAL(8'000'000)).set_disable(); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); // screen.set_refresh_hz(57.4034); // PCB measurement // screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ // screen.set_size(32*8, 32*8); // screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1); // DECO video CRTC, unverified screen.set_raw(FIRETRAP_XTAL/2,384,0,256,272,8,248); screen.set_screen_update(FUNC(firetrap_state::screen_update_firetrap)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_firetrap); PALETTE(config, m_palette, FUNC(firetrap_state::firetrap_palette), 256); /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI); ym3526_device &ymsnd(YM3526(config, "ymsnd", FIRETRAP_XTAL/4)); // 3 MHz ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0); LS157(config, m_adpcm_select, 0); m_adpcm_select->out_callback().set("msm", FUNC(msm5205_device::data_w)); MSM5205(config, m_msm, FIRETRAP_XTAL/32); // 375 kHz m_msm->vck_callback().set(FUNC(firetrap_state::firetrap_adpcm_int)); m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 7.8125kHz */ m_msm->add_route(ALL_OUTPUTS, "mono", 0.30); }
void welltris_state::welltris(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, 20000000/2); /* 10 MHz */ m_maincpu->set_addrmap(AS_PROGRAM, &welltris_state::main_map); m_maincpu->set_vblank_int("screen", FUNC(welltris_state::irq1_line_hold)); Z80(config, m_audiocpu, 8000000/2); /* 4 MHz ??? */ m_audiocpu->set_addrmap(AS_PROGRAM, &welltris_state::sound_map); m_audiocpu->set_addrmap(AS_IO, &welltris_state::sound_port_map); /* IRQs are triggered by the YM2610 */ /* 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, 256); m_screen->set_visarea(15, 367-1, 8, 248-1); m_screen->set_screen_update(FUNC(welltris_state::screen_update)); m_screen->set_palette("palette"); GFXDECODE(config, m_gfxdecode, "palette", gfx_welltris); PALETTE(config, "palette").set_format(palette_device::xRGB_555, 2048); VSYSTEM_GGA(config, "gga", XTAL(14'318'181) / 2); // divider not verified VSYSTEM_SPR2(config, m_spr_old, 0); m_spr_old->set_gfx_region(1); m_spr_old->set_pritype(-1); m_spr_old->set_gfxdecode_tag(m_gfxdecode); /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI); m_soundlatch->set_separate_acknowledge(true); ym2610_device &ymsnd(YM2610(config, "ymsnd", 8000000)); ymsnd.irq_handler().set_inputline(m_audiocpu, 0); ymsnd.add_route(0, "mono", 0.25); ymsnd.add_route(1, "mono", 0.75); ymsnd.add_route(2, "mono", 0.75); }
void stargame_state::stargame(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, 15000000 / 4); // clock line marked as CK4 and derived from 15MHz crystal m_maincpu->set_addrmap(AS_PROGRAM, &stargame_state::maincpu_map); m_maincpu->set_addrmap(AS_IO, &stargame_state::maincpu_io); m_maincpu->set_daisy_config(daisy_chain); Z80(config, m_audiocpu, 15000000 / 3); // ? check divider - clock line marked as CK6 and derived from 15MHz crystal m_audiocpu->set_addrmap(AS_PROGRAM, &stargame_state::audiocpu_map); m_audiocpu->set_addrmap(AS_IO, &stargame_state::audiocpu_io); MCFG_MACHINE_RESET_OVERRIDE(stargame_state, stargame) /* video hardware */ //config.set_default_layout(); Z80CTC(config, m_ctc, 15000000 / 4); m_ctc->intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); m_ctc->zc_callback<0>().set_inputline(m_audiocpu, INPUT_LINE_IRQ0); // SINT - turn on interrupt of the audiocpu /* sound hardware */ genpin_audio(config); SPEAKER(config, "measnd").front_center(); MEA8000(config, "mea8000", 15000000 / 4).add_route(ALL_OUTPUTS, "measnd", 1.0); SPEAKER(config, "aysnd").front_center(); AY8910(config, "ay", 15000000 / 8).add_route(ALL_OUTPUTS, "aysnd", 0.25); // clock line marked as CK2 and derived from 15MHz crystal ls259_device &mainlatch(LS259(config, "mainlatch")); mainlatch.q_out_cb<0>().set_nop(); // DADIS mainlatch.q_out_cb<1>().set_nop(); // DAPRI mainlatch.q_out_cb<2>().set_nop(); // RJUEGO mainlatch.q_out_cb<3>().set_nop(); // RFLIPPER mainlatch.q_out_cb<4>().set_nop(); // to AUXILLIAR socket mainlatch.q_out_cb<5>().set_nop(); // RFDIS mainlatch.q_out_cb<6>().set_inputline(m_audiocpu, INPUT_LINE_RESET).invert(); // SRESET mainlatch.q_out_cb<7>().set_nop(); // MAKRES GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI); WATCHDOG_TIMER(config, "watchdog"); }
GFXDECODE_END /*************************************************************************** Machine Drivers ***************************************************************************/ void quizpun2_state::quizpun2_base(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, XTAL(8'000'000) / 2); // 4 MHz m_maincpu->set_addrmap(AS_PROGRAM, &quizpun2_state::quizpun2_map); m_maincpu->set_addrmap(AS_IO, &quizpun2_state::quizpun2_io_map); m_maincpu->set_vblank_int("screen", FUNC(quizpun2_state::irq0_line_hold)); Z80(config, m_audiocpu, XTAL(8'000'000) / 2); // 4 MHz m_audiocpu->set_addrmap(AS_PROGRAM, &quizpun2_state::quizpun2_sound_map); m_audiocpu->set_addrmap(AS_IO, &quizpun2_state::quizpun2_sound_io_map); m_audiocpu->set_vblank_int("screen", FUNC(quizpun2_state::irq0_line_hold)); // NMI generated by main CPU EEPROM_93C46_16BIT(config, "eeprom"); /* 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(384, 256); screen.set_visarea(0, 384-1, 0, 256-1); screen.set_screen_update(FUNC(quizpun2_state::screen_update_quizpun2)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_quizpun2); PALETTE(config, m_palette, 0x200).set_format(PALETTE_FORMAT_xRRRRRGGGGGBBBBB); /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); ym2203_device &ymsnd(YM2203(config, "ymsnd", XTAL(8'000'000) / 2)); // 4 MHz ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0); }
void kncljoe_state::kncljoe(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, XTAL(6'000'000)); /* verified on pcb */ m_maincpu->set_addrmap(AS_PROGRAM, &kncljoe_state::main_map); m_maincpu->set_vblank_int("screen", FUNC(kncljoe_state::irq0_line_hold)); m6803_cpu_device &soundcpu(M6803(config, "soundcpu", XTAL(3'579'545))); /* verified on pcb */ soundcpu.set_addrmap(AS_PROGRAM, &kncljoe_state::sound_map); soundcpu.in_p1_cb().set(FUNC(kncljoe_state::m6803_port1_r)); soundcpu.out_p1_cb().set(FUNC(kncljoe_state::m6803_port1_w)); soundcpu.in_p2_cb().set(FUNC(kncljoe_state::m6803_port2_r)); soundcpu.out_p2_cb().set(FUNC(kncljoe_state::m6803_port2_w)); soundcpu.set_periodic_int(FUNC(kncljoe_state::sound_nmi), attotime::from_hz((double)3970)); //measured 3.970 kHz /* video hardware */ SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_video_attributes(VIDEO_UPDATE_AFTER_VBLANK); m_screen->set_refresh_hz(60); m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(1500)); m_screen->set_size(32*8, 32*8); m_screen->set_visarea(1*8, 31*8-1, 0*8, 32*8-1); m_screen->set_screen_update(FUNC(kncljoe_state::screen_update_kncljoe)); m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_kncljoe); PALETTE(config, m_palette, FUNC(kncljoe_state::kncljoe_palette), 16*8+16*8, 128+16); /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); AY8910(config, m_ay8910, XTAL(3'579'545)/4); /* verified on pcb */ m_ay8910->port_a_read_callback().set(m_soundlatch, FUNC(generic_latch_8_device::read)); m_ay8910->port_b_write_callback().set(FUNC(kncljoe_state::unused_w)); m_ay8910->add_route(ALL_OUTPUTS, "mono", 0.30); SN76489(config, "sn1", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 0.30); /* verified on pcb */ SN76489(config, "sn2", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 0.30); /* verified on pcb */ }