void tutankhm_state::tutankhm(machine_config &config) { /* basic machine hardware */ MC6809E(config, m_maincpu, XTAL(18'432'000)/12); /* 1.5 MHz ??? */ m_maincpu->set_addrmap(AS_PROGRAM, &tutankhm_state::main_map); ls259_device &mainlatch(LS259(config, "mainlatch")); // C3 mainlatch.q_out_cb<0>().set(FUNC(tutankhm_state::irq_enable_w)); mainlatch.q_out_cb<1>().set_nop(); // PAY OUT - not used mainlatch.q_out_cb<2>().set(FUNC(tutankhm_state::coin_counter_2_w)); mainlatch.q_out_cb<3>().set(FUNC(tutankhm_state::coin_counter_1_w)); mainlatch.q_out_cb<4>().set(FUNC(tutankhm_state::galaxian_stars_enable_w)); mainlatch.q_out_cb<5>().set("timeplt_audio", FUNC(timeplt_audio_device::mute_w)); mainlatch.q_out_cb<6>().set(FUNC(tutankhm_state::flip_screen_x_w)); mainlatch.q_out_cb<7>().set(FUNC(tutankhm_state::flip_screen_y_w)); WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_raw(GALAXIAN_PIXEL_CLOCK, GALAXIAN_HTOTAL, GALAXIAN_HBEND, GALAXIAN_HBSTART, GALAXIAN_VTOTAL, GALAXIAN_VBEND, GALAXIAN_VBSTART); PALETTE(config, m_palette).set_format(1, tutankhm_state::raw_to_rgb_func, 16); m_screen->set_screen_update(FUNC(tutankhm_state::screen_update_tutankhm)); m_screen->screen_vblank().set(FUNC(tutankhm_state::vblank_irq)); /* sound hardware */ TIMEPLT_AUDIO(config, "timeplt_audio"); /* blinking frequency is determined by 555 counter with Ra=100k, Rb=10k, C=10uF */ TIMER(config, "stars").configure_periodic(FUNC(tutankhm_state::scramble_stars_blink_timer), PERIOD_OF_555_ASTABLE(100000, 10000, 0.00001)); }
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); }
INPUT_PORTS_END /*************************************************************************** Machine Config ***************************************************************************/ void mw18w_state::mw18w(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, XTAL(19'968'000)/8); m_maincpu->set_periodic_int(FUNC(mw18w_state::irq0_line_assert), attotime::from_hz(960.516)); // 555 IC m_maincpu->set_addrmap(AS_PROGRAM, &mw18w_state::mw18w_map); m_maincpu->set_addrmap(AS_IO, &mw18w_state::mw18w_portmap); WATCHDOG_TIMER(config, "watchdog"); /* no video! */ /* sound hardware */ //... }
void gberet_state::gberet(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, XTAL(18'432'000)/6); // X1S (generated by a custom IC) m_maincpu->set_addrmap(AS_PROGRAM, &gberet_state::gberet_map); TIMER(config, "scantimer").configure_scanline(FUNC(gberet_state::gberet_interrupt_tick), "screen", 0, 16); WATCHDOG_TIMER(config, "watchdog"); MCFG_MACHINE_START_OVERRIDE(gberet_state,gberet) MCFG_MACHINE_RESET_OVERRIDE(gberet_state,gberet) /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(60.60); screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); screen.set_size(32*8, 32*8); screen.set_visarea(1*8, 31*8-1, 2*8, 30*8-1); screen.set_screen_update(FUNC(gberet_state::screen_update_gberet)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_gberet); PALETTE(config, m_palette, FUNC(gberet_state::gberet_palette), 2*16*16, 32); MCFG_VIDEO_START_OVERRIDE(gberet_state,gberet) /* sound hardware */ SPEAKER(config, "mono").front_center(); SN76489A(config, m_sn, XTAL(18'432'000)/12).add_route(ALL_OUTPUTS, "mono", 1.0); /* type verified on real and bootleg pcb */ }
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 gotya_state::gotya(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, 18432000/6); /* 3.072 MHz ??? */ m_maincpu->set_addrmap(AS_PROGRAM, &gotya_state::gotya_map); m_maincpu->set_vblank_int("screen", FUNC(gotya_state::irq0_line_hold)); 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(2500)); /* not accurate */ screen.set_size(36*8, 32*8); screen.set_visarea(0, 36*8-1, 2*8, 30*8-1); screen.set_screen_update(FUNC(gotya_state::screen_update_gotya)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_gotya); PALETTE(config, m_palette, FUNC(gotya_state::gotya_palette), 16*4, 32); /* sound hardware */ SPEAKER(config, "mono").front_center(); SAMPLES(config, m_samples); m_samples->set_channels(4); m_samples->set_samples_names(sample_names); m_samples->add_route(ALL_OUTPUTS, "mono", 1.0); }
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 deadang_state::deadang(machine_config &config) { /* basic machine hardware */ V30(config, m_maincpu, XTAL(16'000'000)/2); /* Sony 8623h9 CXQ70116D-8 (V30 compatible) */ m_maincpu->set_addrmap(AS_PROGRAM, &deadang_state::main_map); TIMER(config, "scantimer1").configure_scanline(FUNC(deadang_state::main_scanline), "screen", 0, 1); V30(config, m_subcpu, XTAL(16'000'000)/2); /* Sony 8623h9 CXQ70116D-8 (V30 compatible) */ m_subcpu->set_addrmap(AS_PROGRAM, &deadang_state::sub_map); TIMER(config, "scantimer2").configure_scanline(FUNC(deadang_state::sub_scanline), "screen", 0, 1); Z80(config, m_audiocpu, XTAL(14'318'181)/4); m_audiocpu->set_addrmap(AS_PROGRAM, &deadang_state::sound_map); m_audiocpu->set_addrmap(AS_OPCODES, &deadang_state::sound_decrypted_opcodes_map); m_audiocpu->set_irq_acknowledge_callback("seibu_sound", FUNC(seibu_sound_device::im0_vector_cb)); SEI80BU(config, "sei80bu", 0).set_device_rom_tag("audiocpu"); config.m_minimum_quantum = attotime::from_hz(60); // the game stops working with higher interleave rates.. 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(2500)); /* not accurate */ 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(deadang_state::screen_update)); m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_deadang); PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 2048); /* sound hardware */ SPEAKER(config, "mono").front_center(); SEIBU_SOUND(config, m_seibu_sound, 0); m_seibu_sound->int_callback().set_inputline(m_audiocpu, 0); m_seibu_sound->set_rom_tag("audiocpu"); m_seibu_sound->set_rombank_tag("seibu_bank1"); m_seibu_sound->ym_read_callback().set("ym1", FUNC(ym2203_device::read)); m_seibu_sound->ym_write_callback().set("ym1", FUNC(ym2203_device::write)); ym2203_device &ym1(YM2203(config, "ym1", XTAL(14'318'181)/4)); ym1.irq_handler().set("seibu_sound", FUNC(seibu_sound_device::fm_irqhandler)); ym1.add_route(ALL_OUTPUTS, "mono", 0.15); ym2203_device &ym2(YM2203(config, "ym2", XTAL(14'318'181)/4)); ym2.add_route(ALL_OUTPUTS, "mono", 0.15); SEIBU_ADPCM(config, m_adpcm1, 8000).add_route(ALL_OUTPUTS, "mono", 0.40); SEIBU_ADPCM(config, m_adpcm2, 8000).add_route(ALL_OUTPUTS, "mono", 0.40); }
void rastan_state::rastan(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, XTAL(16'000'000)/2); /* verified on pcb */ m_maincpu->set_addrmap(AS_PROGRAM, &rastan_state::rastan_map); m_maincpu->set_vblank_int("screen", FUNC(rastan_state::irq5_line_hold)); Z80(config, m_audiocpu, XTAL(16'000'000)/4); /* verified on pcb */ m_audiocpu->set_addrmap(AS_PROGRAM, &rastan_state::rastan_s_map); config.m_minimum_quantum = attotime::from_hz(600); /* 10 CPU slices per frame - enough for the sound CPU to read all commands */ 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(40*8, 32*8); screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1); screen.set_screen_update(FUNC(rastan_state::screen_update_rastan)); screen.set_palette("palette"); GFXDECODE(config, "gfxdecode", "palette", gfx_rastan); PALETTE(config, "palette").set_format(palette_device::xBGR_555, 2048); PC080SN(config, m_pc080sn, 0); m_pc080sn->set_gfxdecode_tag("gfxdecode"); PC090OJ(config, m_pc090oj, 0); m_pc090oj->set_gfx_region(1); m_pc090oj->set_gfxdecode_tag("gfxdecode"); m_pc090oj->set_palette_tag("palette"); /* sound hardware */ SPEAKER(config, "mono").front_center(); ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(16'000'000)/4)); /* verified on pcb */ ymsnd.irq_handler().set_inputline(m_audiocpu, 0); ymsnd.port_write_handler().set(FUNC(rastan_state::rastan_bankswitch_w)); ymsnd.add_route(0, "mono", 0.50); ymsnd.add_route(1, "mono", 0.50); MSM5205(config, m_msm, XTAL(384'000)); /* verified on pcb */ m_msm->vck_legacy_callback().set(FUNC(rastan_state::rastan_msm5205_vck)); /* VCK function */ m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8 kHz */ m_msm->add_route(ALL_OUTPUTS, "mono", 0.60); LS157(config, m_adpcm_sel, 0); m_adpcm_sel->out_callback().set(m_msm, FUNC(msm5205_device::data_w)); pc060ha_device &ciu(PC060HA(config, "ciu", 0)); ciu.set_master_tag(m_maincpu); ciu.set_slave_tag(m_audiocpu); }
GFXDECODE_END /************************************* * * Machine driver * *************************************/ void ccastles_state::ccastles(machine_config &config) { /* basic machine hardware */ M6502(config, m_maincpu, MASTER_CLOCK/8); m_maincpu->set_addrmap(AS_PROGRAM, &ccastles_state::main_map); LS259(config, m_outlatch[0]); // 8N m_outlatch[0]->q_out_cb<0>().set_output("led0").invert(); m_outlatch[0]->q_out_cb<1>().set_output("led1").invert(); m_outlatch[0]->q_out_cb<2>().set(FUNC(ccastles_state::nvram_store_w)); m_outlatch[0]->q_out_cb<3>().set(FUNC(ccastles_state::nvram_store_w)); m_outlatch[0]->q_out_cb<5>().set([this] (int state) { machine().bookkeeping().coin_counter_w(0, state); }); m_outlatch[0]->q_out_cb<6>().set([this] (int state) { machine().bookkeeping().coin_counter_w(1, state); }); m_outlatch[0]->q_out_cb<7>().set_membank("bank1"); LS259(config, m_outlatch[1]); // 6P WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 8); X2212(config, "nvram_4b").set_auto_save(true); X2212(config, "nvram_4a").set_auto_save(true); /* video hardware */ GFXDECODE(config, m_gfxdecode, m_palette, gfx_ccastles); PALETTE(config, m_palette).set_entries(32); SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_raw(PIXEL_CLOCK, HTOTAL, 0, 256, VTOTAL, 24, 256); // potentially adjusted later m_screen->set_screen_update(FUNC(ccastles_state::screen_update_ccastles)); m_screen->set_palette(m_palette); /* sound hardware */ SPEAKER(config, "mono").front_center(); pokey_device &pokey1(POKEY(config, "pokey1", MASTER_CLOCK/8)); /* NOTE: 1k + 0.2k is not 100% exact, but should not make an audible difference */ pokey1.set_output_opamp(RES_K(1) + RES_K(0.2), CAP_U(0.01), 5.0); pokey1.add_route(ALL_OUTPUTS, "mono", 1.0); pokey_device &pokey2(POKEY(config, "pokey2", MASTER_CLOCK/8)); /* NOTE: 1k + 0.2k is not 100% exact, but should not make an audible difference */ pokey2.set_output_opamp(RES_K(1) + RES_K(0.2), CAP_U(0.01), 5.0); pokey2.allpot_r().set_ioport("IN1"); pokey2.add_route(ALL_OUTPUTS, "mono", 1.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); }
GFXDECODE_END void holeland_state::holeland(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, 3355700); /* measured 298ns on PCB */ m_maincpu->set_addrmap(AS_PROGRAM, &holeland_state::holeland_map); m_maincpu->set_addrmap(AS_IO, &holeland_state::io_map); m_maincpu->set_vblank_int("screen", FUNC(holeland_state::irq0_line_hold)); LS259(config, m_latch); // 3J 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)); m_latch->q_out_cb<6>().set(FUNC(holeland_state::flipscreen_x_w)); m_latch->q_out_cb<7>().set(FUNC(holeland_state::flipscreen_y_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(32*16, 32*16); screen.set_visarea(0*16, 32*16-1, 2*16, 30*16-1); screen.set_screen_update(FUNC(holeland_state::screen_update_holeland)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_holeland); PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 256); MCFG_VIDEO_START_OVERRIDE(holeland_state,holeland) /* sound hardware */ SPEAKER(config, "mono").front_center(); ay8910_device &ay1(AY8910(config, "ay1", 20000000 / 32)); /* verified on PCB */ 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)); /* verified on PCB */ ay2.port_a_read_callback().set_ioport("DSW1"); ay2.port_b_read_callback().set_ioport("DSW2"); ay2.add_route(ALL_OUTPUTS, "mono", 0.25); sp0256_device &speech(SP0256(config, "speech", 3355700)); /* measured 298ns on PCB */ speech.data_request_callback().set_inputline("maincpu", INPUT_LINE_NMI); speech.add_route(ALL_OUTPUTS, "mono", 1.0); }
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 */ }
/************************************* * * Graphics definitions * *************************************/ static const gfx_layout anlayout = { 8,8, RGN_FRAC(1,1), 2, { 0, 4 }, { 0, 1, 2, 3, 8, 9, 10, 11 }, { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 }, 8*16 }; static const gfx_layout pfmolayout = { 8,8, RGN_FRAC(1,4), 4, { RGN_FRAC(0,4), RGN_FRAC(1,4), RGN_FRAC(2,4), RGN_FRAC(3,4) }, { 0, 1, 2, 3, 4, 5, 6, 7 }, { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, 8*8 }; static GFXDECODE_START( gfx_vindictr ) GFXDECODE_ENTRY( "gfx1", 0, pfmolayout, 256, 32 ) /* sprites & playfield */ GFXDECODE_ENTRY( "gfx2", 0, anlayout, 0, 64 ) /* characters 8x8 */ GFXDECODE_END /************************************* * * Machine driver * *************************************/ void vindictr_state::vindictr(machine_config &config) { /* basic machine hardware */ M68010(config, m_maincpu, ATARI_CLOCK_14MHz/2); m_maincpu->set_addrmap(AS_PROGRAM, &vindictr_state::main_map); EEPROM_2804(config, "eeprom").lock_after_write(true); WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ GFXDECODE(config, m_gfxdecode, m_palette, gfx_vindictr); PALETTE(config, m_palette).set_entries(2048*8); TILEMAP(config, m_playfield_tilemap, m_gfxdecode, 2, 8,8, TILEMAP_SCAN_COLS, 64,64).set_info_callback(FUNC(vindictr_state::get_playfield_tile_info)); TILEMAP(config, m_alpha_tilemap, m_gfxdecode, 2, 8,8, TILEMAP_SCAN_ROWS, 64,32, 0).set_info_callback(FUNC(vindictr_state::get_alpha_tile_info)); ATARI_MOTION_OBJECTS(config, m_mob, 0, m_screen, vindictr_state::s_mob_config); m_mob->set_gfxdecode(m_gfxdecode); SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK); /* note: these parameters are from published specs, not derived */ /* the board uses a SYNGEN chip to generate video signals */ m_screen->set_raw(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240); m_screen->set_screen_update(FUNC(vindictr_state::screen_update_vindictr)); m_screen->set_palette(m_palette); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); ATARI_JSA_I(config, m_jsa, 0); m_jsa->main_int_cb().set_inputline(m_maincpu, M68K_IRQ_6); m_jsa->test_read_cb().set_ioport("260010").bit(12); m_jsa->add_route(0, "lspeaker", 1.0); m_jsa->add_route(1, "rspeaker", 1.0); config.device_remove("jsa:tms"); }
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); }
/************************************* * * Graphics definitions * *************************************/ static const gfx_layout pfmolayout = { 8,8, RGN_FRAC(1,2), 4, { 0, 1, 2, 3 }, { 0, 4, RGN_FRAC(1,2)+0, RGN_FRAC(1,2)+4, 8, 12, RGN_FRAC(1,2)+8, RGN_FRAC(1,2)+12 }, { 0*8, 2*8, 4*8, 6*8, 8*8, 10*8, 12*8, 14*8 }, 16*8 }; static GFXDECODE_START( gfx_klax ) GFXDECODE_ENTRY( "gfx1", 0, pfmolayout, 256, 16 ) /* sprites & playfield */ GFXDECODE_ENTRY( "gfx2", 0, pfmolayout, 0, 16 ) /* sprites & playfield */ GFXDECODE_END static const gfx_layout bootleg_layout = { 8,8, RGN_FRAC(1,4), 4, { RGN_FRAC(0,4), RGN_FRAC(1,4), RGN_FRAC(2,4), RGN_FRAC(3,4) }, { 0,1,2,3,4,5,6,7 }, { 0*8,1*8,2*8,3*8,4*8,5*8,6*8,7*8 }, 8*8 }; static GFXDECODE_START( gfx_klax2bl ) GFXDECODE_ENTRY( "gfx1", 0, bootleg_layout, 256, 16 ) /* sprites & playfield */ GFXDECODE_ENTRY( "gfx2", 0, pfmolayout, 0, 16 ) /* sprites & playfield */ GFXDECODE_END /************************************* * * Machine driver * *************************************/ void klax_state::klax(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, ATARI_CLOCK_14MHz/2); m_maincpu->set_addrmap(AS_PROGRAM, &klax_state::klax_map); EEPROM_2816(config, "eeprom").lock_after_write(true); WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ GFXDECODE(config, m_gfxdecode, "palette", gfx_klax); PALETTE(config, "palette").set_format(palette_device::IRGB_1555, 512).set_membits(8); TILEMAP(config, m_playfield_tilemap, m_gfxdecode, 2, 8, 8, TILEMAP_SCAN_COLS, 64, 32); m_playfield_tilemap->set_info_callback(FUNC(klax_state::get_playfield_tile_info)); ATARI_MOTION_OBJECTS(config, m_mob, 0, m_screen, klax_state::s_mob_config); m_mob->set_gfxdecode(m_gfxdecode); SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK); /* note: these parameters are from published specs, not derived */ /* the board uses an SOS-2 chip to generate video signals */ m_screen->set_raw(ATARI_CLOCK_14MHz/2, 456, 0, 336, 262, 0, 240); m_screen->set_screen_update(FUNC(klax_state::screen_update_klax)); m_screen->set_palette("palette"); m_screen->screen_vblank().set(FUNC(klax_state::video_int_write_line)); /* sound hardware */ SPEAKER(config, "mono").front_center(); OKIM6295(config, "oki", ATARI_CLOCK_14MHz/4/4, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); }
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"); }
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 avalnche_state::avalnche_base(machine_config &config) { /* basic machine hardware */ M6502(config, m_maincpu, 12.096_MHz_XTAL / 16); /* clock input is the "2H" signal divided by two */ m_maincpu->set_addrmap(AS_PROGRAM, &avalnche_state::main_map); m_maincpu->set_periodic_int(FUNC(avalnche_state::nmi_line_pulse), attotime::from_hz(8*60)); F9334(config, m_latch); // F8 m_latch->q_out_cb<0>().set_output("led0"); // 1 CREDIT LAMP m_latch->q_out_cb<2>().set(FUNC(avalnche_state::video_invert_w)); m_latch->q_out_cb<3>().set_output("led1"); // 2 CREDIT LAMP m_latch->q_out_cb<7>().set_output("led2"); // START LAMP // Q1, Q4, Q5, Q6 are configured in audio/avalnche.cpp WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_raw(12.096_MHz_XTAL / 2, 384, 0, 256, 262, 16, 256); screen.set_screen_update(FUNC(avalnche_state::screen_update_avalnche)); }
void tc0220ioc_device::device_add_mconfig(machine_config &config) { WATCHDOG_TIMER(config, m_watchdog); // m_watchdog->set_time(attotime::from_msec(3200)); }
void tc0640fio_device::device_add_mconfig(machine_config &config) { WATCHDOG_TIMER(config, m_watchdog); }
void namco_c117_device::device_add_mconfig(machine_config &config) { WATCHDOG_TIMER(config, m_watchdog); }