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 mc1000_state::mc1000(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, 3579545); m_maincpu->set_addrmap(AS_PROGRAM, &mc1000_state::mc1000_mem); m_maincpu->set_addrmap(AS_OPCODES, &mc1000_state::mc1000_banking_mem); m_maincpu->set_addrmap(AS_IO, &mc1000_state::mc1000_io); /* timers */ timer_device &ne555clear(TIMER(config, "ne555clear")); ne555clear.configure_periodic(FUNC(mc1000_state::ne555_tick), attotime::from_hz(MC1000_NE555_FREQ)); ne555clear.config_param(CLEAR_LINE); timer_device &ne555assert(TIMER(config, "ne555assert")); ne555assert.configure_periodic(FUNC(mc1000_state::ne555_tick), attotime::from_hz(MC1000_NE555_FREQ)); ne555assert.set_start_delay(attotime::from_hz(MC1000_NE555_FREQ * 100 / MC1000_NE555_DUTY_CYCLE)); ne555assert.config_param(ASSERT_LINE); /* video hardware */ SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER); MC6847_NTSC(config, m_vdg, XTAL(3'579'545)); m_vdg->hsync_wr_callback().set(FUNC(mc1000_state::hs_w)); m_vdg->fsync_wr_callback().set(FUNC(mc1000_state::fs_w)); m_vdg->input_callback().set(FUNC(mc1000_state::videoram_r)); m_vdg->set_screen(SCREEN_TAG); /* sound hardware */ SPEAKER(config, "mono").front_center(); ay8910_device &ay8910(AY8910(config, AY8910_TAG, 3579545/2)); ay8910.set_flags(AY8910_SINGLE_OUTPUT); ay8910.set_resistors_load(RES_K(2.2), 0, 0); ay8910.port_b_read_callback().set(FUNC(mc1000_state::keydata_r)); ay8910.port_a_write_callback().set(FUNC(mc1000_state::keylatch_w)); ay8910.add_route(ALL_OUTPUTS, "mono", 0.25); /* devices */ CASSETTE(config, m_cassette); m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED); m_cassette->set_interface("mc1000_cass"); SOFTWARE_LIST(config, "cass_list").set_original("mc1000_cass"); CENTRONICS(config, m_centronics, centronics_devices, "printer"); m_centronics->busy_handler().set(FUNC(mc1000_state::write_centronics_busy)); output_latch_device &latch(OUTPUT_LATCH(config, "cent_data_out")); m_centronics->set_output_latch(latch); /* internal ram */ RAM(config, RAM_TAG).set_default_size("16K").set_extra_options("48K"); }
void exedexes_state::exedexes(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, 4000000); /* 4 MHz (?) */ m_maincpu->set_addrmap(AS_PROGRAM, &exedexes_state::exedexes_map); TIMER(config, "scantimer").configure_scanline(FUNC(exedexes_state::exedexes_scanline), "screen", 0, 1); z80_device &audiocpu(Z80(config, "audiocpu", 3000000)); /* 3 MHz ??? */ audiocpu.set_addrmap(AS_PROGRAM, &exedexes_state::sound_map); audiocpu.set_periodic_int(FUNC(exedexes_state::irq0_line_hold), attotime::from_hz(4*60)); /* video hardware */ BUFFERED_SPRITERAM8(config, m_spriteram); 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(exedexes_state::screen_update_exedexes)); screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_exedexes); PALETTE(config, m_palette, FUNC(exedexes_state::exedexes_palette), 64*4+64*4+16*16+16*16, 256); /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, "soundlatch"); AY8910(config, "aysnd", 1500000).add_route(ALL_OUTPUTS, "mono", 0.10); SN76489(config, "sn1", 3000000).add_route(ALL_OUTPUTS, "mono", 0.36); SN76489(config, "sn2", 3000000).add_route(ALL_OUTPUTS, "mono", 0.36); }
void tankbust_state::tankbust(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, XTAL(14'318'181)/2); /* Verified on PCB */ m_maincpu->set_addrmap(AS_PROGRAM, &tankbust_state::main_map); m_maincpu->set_vblank_int("screen", FUNC(tankbust_state::vblank_irq)); Z80(config, m_subcpu, XTAL(14'318'181)/4); /* Verified on PCB */ // Z80(config, m_subcpu, XTAL(14'318'181)/3); /* Accurate to audio recording, but apparently incorrect clock */ m_subcpu->set_addrmap(AS_PROGRAM, &tankbust_state::map_cpu2); m_subcpu->set_addrmap(AS_IO, &tankbust_state::port_map_cpu2); 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(2500) /* not accurate */); screen.set_size( 64*8, 32*8); screen.set_visarea( 16*8, 56*8-1, 1*8, 31*8-1); // screen.set_visarea( 0*8, 64*8-1, 1*8, 31*8-1); screen.set_screen_update(FUNC(tankbust_state::screen_update)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_tankbust); PALETTE(config, m_palette, FUNC(tankbust_state::tankbust_palette), 128); /* sound hardware */ SPEAKER(config, "mono").front_center(); ay8910_device &ay1(AY8910(config, "ay1", XTAL(14'318'181)/16)); /* Verified on PCB */ ay1.port_a_read_callback().set(FUNC(tankbust_state::soundlatch_r)); ay1.port_b_read_callback().set(FUNC(tankbust_state::soundtimer_r)); ay1.add_route(ALL_OUTPUTS, "mono", 0.10); AY8910(config, "ay2", XTAL(14'318'181)/16).add_route(ALL_OUTPUTS, "mono", 0.10); /* Verified on PCB */ }
GFXDECODE_END void vulgus_state::vulgus(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, XTAL(12'000'000)/4); /* 3 MHz */ m_maincpu->set_addrmap(AS_PROGRAM, &vulgus_state::main_map); m_maincpu->set_vblank_int("screen", FUNC(vulgus_state::vblank_irq)); Z80(config, m_audiocpu, XTAL(12'000'000)/4); /* 3 MHz */ m_audiocpu->set_addrmap(AS_PROGRAM, &vulgus_state::sound_map); m_audiocpu->set_periodic_int(FUNC(vulgus_state::irq0_line_hold), attotime::from_hz(8*60)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(59.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(vulgus_state::screen_update)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_vulgus); PALETTE(config, m_palette, FUNC(vulgus_state::vulgus_palette), 64*4+16*16+4*32*8, 256); /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, "soundlatch"); AY8910(config, "ay1", XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.25); /* 1.5 MHz */ AY8910(config, "ay2", XTAL(12'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.25); /* 1.5 MHz */ }
void calorie_state::calorie(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, 4000000); /* 4 MHz */ m_maincpu->set_addrmap(AS_PROGRAM, &calorie_state::calorie_map); m_maincpu->set_addrmap(AS_OPCODES, &calorie_state::decrypted_opcodes_map); m_maincpu->set_vblank_int("screen", FUNC(calorie_state::irq0_line_hold)); z80_device &audiocpu(Z80(config, "audiocpu", 3000000)); /* 3 MHz */ audiocpu.set_addrmap(AS_PROGRAM, &calorie_state::calorie_sound_map); audiocpu.set_addrmap(AS_IO, &calorie_state::calorie_sound_io_map); audiocpu.set_periodic_int(FUNC(calorie_state::irq0_line_hold), attotime::from_hz(64)); /* 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, 256-1, 16, 256-16-1); screen.set_screen_update(FUNC(calorie_state::screen_update_calorie)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_calorie); PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 0x100); /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); YM2149(config, "ay1", 1500000).add_route(ALL_OUTPUTS, "mono", 0.8); YM2149(config, "ay2", 1500000).add_route(ALL_OUTPUTS, "mono", 0.8); YM2149(config, "ay3", 1500000).add_route(ALL_OUTPUTS, "mono", 0.8); }
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 */ }
void a5105_state::a5105(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, XTAL(15'000'000) / 4); m_maincpu->set_addrmap(AS_PROGRAM, &a5105_state::a5105_mem); m_maincpu->set_addrmap(AS_IO, &a5105_state::a5105_io); m_maincpu->set_daisy_config(a5105_daisy_chain); /* video hardware */ SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_refresh_hz(50); m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ m_screen->set_screen_update("upd7220", FUNC(upd7220_device::screen_update)); m_screen->set_size(40*8, 32*8); m_screen->set_visarea(0, 40*8-1, 0, 25*8-1); GFXDECODE(config, m_gfxdecode, m_palette, gfx_a5105); PALETTE(config, m_palette, FUNC(a5105_state::a5105_palette), 16); /* sound hardware */ SPEAKER(config, "mono").front_center(); WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25); BEEP(config, "beeper", 500).add_route(ALL_OUTPUTS, "mono", 0.50); /* Devices */ UPD7220(config, m_hgdc, XTAL(15'000'000) / 16); // unk clock m_hgdc->set_addrmap(0, &a5105_state::upd7220_map); m_hgdc->set_display_pixels(FUNC(a5105_state::hgdc_display_pixels)); m_hgdc->set_draw_text(FUNC(a5105_state::hgdc_draw_text)); z80ctc_device& ctc(Z80CTC(config, "z80ctc", XTAL(15'000'000) / 4)); ctc.intr_callback().set_inputline(m_maincpu, 0); ctc.zc_callback<0>().set("z80ctc", FUNC(z80ctc_device::trg2)); ctc.zc_callback<2>().set("z80ctc", FUNC(z80ctc_device::trg3)); z80pio_device& pio(Z80PIO(config, "z80pio", XTAL(15'000'000) / 4)); pio.in_pb_callback().set(FUNC(a5105_state::pio_pb_r)); pio.out_int_callback().set_inputline(m_maincpu, 0); CASSETTE(config, m_cass); UPD765A(config, m_fdc, 8'000'000, true, true); FLOPPY_CONNECTOR(config, "upd765a:0", a5105_floppies, "525qd", a5105_state::floppy_formats); FLOPPY_CONNECTOR(config, "upd765a:1", a5105_floppies, "525qd", a5105_state::floppy_formats); FLOPPY_CONNECTOR(config, "upd765a:2", a5105_floppies, "525qd", a5105_state::floppy_formats); FLOPPY_CONNECTOR(config, "upd765a:3", a5105_floppies, "525qd", a5105_state::floppy_formats); /* internal ram */ RAM(config, RAM_TAG).set_default_size("64K"); }
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 z80netf_state::z80netf(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, Z80NE_CPU_SPEED_HZ); m_maincpu->set_addrmap(AS_PROGRAM, &z80netf_state::z80netf_mem); m_maincpu->set_addrmap(AS_IO, &z80netf_state::z80netf_io); MCFG_MACHINE_START_OVERRIDE(z80netf_state,z80netf) MCFG_MACHINE_RESET_OVERRIDE(z80netf_state,z80netf) AY31015(config, m_uart); CLOCK(config, m_uart_clock, 4800); m_uart_clock->signal_handler().set(FUNC(z80netf_state::lx385_uart_tx_clock_w)); m_uart_clock->signal_handler().append(m_uart, FUNC(ay31015_device::write_rcp)); CASSETTE(config, m_cassette1); m_cassette1->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED); m_cassette1->set_interface("z80ne_cass"); CASSETTE(config, m_cassette2); m_cassette2->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED); m_cassette2->set_interface("z80ne_cass"); KR2376_ST(config, m_lx387_kr2376, 50000); /* video hardware */ SCREEN(config, "lx388", SCREEN_TYPE_RASTER); MC6847_PAL(config, m_vdg, 4.433619_MHz_XTAL); m_vdg->set_screen("lx388"); m_vdg->input_callback().set(FUNC(z80ne_state::lx388_mc6847_videoram_r)); // AG = GND, GM2 = GND, GM1 = GND, GM0 = GND, CSS = GND // other lines not connected FD1771(config, m_wd1771, 2_MHz_XTAL / 2); FLOPPY_CONNECTOR(config, "wd1771:0", z80ne_floppies, "sssd", z80ne_state::floppy_formats); FLOPPY_CONNECTOR(config, "wd1771:1", z80ne_floppies, "sssd", z80ne_state::floppy_formats); FLOPPY_CONNECTOR(config, "wd1771:2", z80ne_floppies, nullptr, z80ne_state::floppy_formats); FLOPPY_CONNECTOR(config, "wd1771:3", z80ne_floppies, nullptr, z80ne_state::floppy_formats); config.set_default_layout(layout_z80netf); /* internal ram */ RAM(config, m_ram).set_default_size("56K"); SOFTWARE_LIST(config, "cass_list").set_original("z80ne_cass"); SOFTWARE_LIST(config, "flop_list").set_original("z80ne_flop"); }
void spectrum_state::spectrum_common(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, X1 / 4); /* This is verified only for the ZX Spectrum. Other clones are reported to have different clocks */ m_maincpu->set_addrmap(AS_PROGRAM, &spectrum_state::spectrum_mem); m_maincpu->set_addrmap(AS_IO, &spectrum_state::spectrum_io); m_maincpu->set_addrmap(AS_OPCODES, &spectrum_state::spectrum_fetch); m_maincpu->set_vblank_int("screen", FUNC(spectrum_state::spec_interrupt)); config.m_minimum_quantum = attotime::from_hz(60); MCFG_MACHINE_RESET_OVERRIDE(spectrum_state, spectrum ) /* video hardware */ SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_raw(X1 / 2, 448, 0, 352, 312, 0, 296); m_screen->set_screen_update(FUNC(spectrum_state::screen_update_spectrum)); m_screen->screen_vblank().set(FUNC(spectrum_state::screen_vblank_spectrum)); m_screen->set_palette("palette"); PALETTE(config, "palette", FUNC(spectrum_state::spectrum_palette), 16); GFXDECODE(config, "gfxdecode", "palette", gfx_spectrum); MCFG_VIDEO_START_OVERRIDE(spectrum_state, spectrum) /* sound hardware */ SPEAKER(config, "mono").front_center(); WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25); SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50); /* expansion port */ SPECTRUM_EXPANSION_SLOT(config, m_exp, spectrum_expansion_devices, "kempjoy"); m_exp->irq_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0); m_exp->nmi_handler().set_inputline(m_maincpu, INPUT_LINE_NMI); /* devices */ snapshot_image_device &snapshot(SNAPSHOT(config, "snapshot")); snapshot.set_handler(snapquick_load_delegate(&SNAPSHOT_LOAD_NAME(spectrum_state, spectrum), this), "ach,frz,plusd,prg,sem,sit,sna,snp,snx,sp,z80,zx"); quickload_image_device &quickload(QUICKLOAD(config, "quickload")); quickload.set_handler(snapquick_load_delegate(&QUICKLOAD_LOAD_NAME(spectrum_state, spectrum), this), "raw,scr", attotime::from_seconds(2)); // The delay prevents the screen from being cleared by the RAM test at boot CASSETTE(config, m_cassette); m_cassette->set_formats(tzx_cassette_formats); m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED); m_cassette->set_interface("spectrum_cass"); SOFTWARE_LIST(config, "cass_list").set_original("spectrum_cass"); }
void raiden_state::raiden(machine_config &config) { /* basic machine hardware */ V30(config, m_maincpu, XTAL(20'000'000)/2); /* NEC V30 CPU, 20MHz verified on pcb */ m_maincpu->set_addrmap(AS_PROGRAM, &raiden_state::main_map); V30(config, m_subcpu, XTAL(20'000'000)/2); /* NEC V30 CPU, 20MHz verified on pcb */ m_subcpu->set_addrmap(AS_PROGRAM, &raiden_state::sub_map); z80_device &audiocpu(Z80(config, "audiocpu", XTAL(14'318'181)/4)); /* verified on pcb */ audiocpu.set_addrmap(AS_PROGRAM, &raiden_state::seibu_sound_map); audiocpu.set_irq_acknowledge_callback("seibu_sound", FUNC(seibu_sound_device::im0_vector_cb)); config.m_minimum_quantum = attotime::from_hz(12000); /* video hardware */ BUFFERED_SPRITERAM16(config, m_spriteram); screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(59.60); // verified on pcb */ 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, 2*8, 30*8-1); screen.set_screen_update(FUNC(raiden_state::screen_update_raiden)); screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising)); screen.screen_vblank().append(FUNC(raiden_state::vblank_irq)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_raiden); PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 2048); /* sound hardware */ SPEAKER(config, "mono").front_center(); ym3812_device &ymsnd(YM3812(config, "ymsnd", XTAL(14'318'181)/4)); ymsnd.irq_handler().set("seibu_sound", FUNC(seibu_sound_device::fm_irqhandler)); ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0); okim6295_device &oki(OKIM6295(config, "oki", XTAL(12'000'000)/12, okim6295_device::PIN7_HIGH)); // frequency and pin 7 verified oki.add_route(ALL_OUTPUTS, "mono", 1.0); SEIBU_SOUND(config, m_seibu_sound, 0); m_seibu_sound->int_callback().set_inputline("audiocpu", 0); m_seibu_sound->set_rom_tag("audiocpu"); m_seibu_sound->set_rombank_tag("seibu_bank1"); m_seibu_sound->ym_read_callback().set("ymsnd", FUNC(ym3812_device::read)); m_seibu_sound->ym_write_callback().set("ymsnd", FUNC(ym3812_device::write)); }
ROM_END /*************************************************************************** FUNCTION PROTOTYPES ***************************************************************************/ //------------------------------------------------- // device_add_mconfig - add device configuration //------------------------------------------------- void a2bus_applicard_device::device_add_mconfig(machine_config &config) { Z80(config, m_z80, 6000000); // Z80 runs at 6 MHz m_z80->set_addrmap(AS_PROGRAM, &a2bus_applicard_device::z80_mem); m_z80->set_addrmap(AS_IO, &a2bus_applicard_device::z80_io); }
void newbrain_fdc_device::device_add_mconfig(machine_config &config) { Z80(config, m_maincpu, XTAL(4'000'000)); m_maincpu->set_addrmap(AS_PROGRAM, &newbrain_fdc_device::newbrain_fdc_mem); m_maincpu->set_addrmap(AS_IO, &newbrain_fdc_device::newbrain_fdc_io); UPD765A(config, m_fdc, 8'000'000, false, true); m_fdc->intrq_wr_callback().set(FUNC(newbrain_fdc_device::fdc_int_w)); FLOPPY_CONNECTOR(config, UPD765_TAG ":0", newbrain_floppies, "525dd", floppy_image_device::default_floppy_formats); FLOPPY_CONNECTOR(config, UPD765_TAG ":1", newbrain_floppies, "525dd", floppy_image_device::default_floppy_formats); FLOPPY_CONNECTOR(config, UPD765_TAG ":2", newbrain_floppies, nullptr, floppy_image_device::default_floppy_formats); FLOPPY_CONNECTOR(config, UPD765_TAG ":3", newbrain_floppies, nullptr, floppy_image_device::default_floppy_formats); NEWBRAIN_EXPANSION_SLOT(config, m_exp, XTAL(16'000'000)/8, newbrain_expansion_cards, nullptr); }
INPUT_PORTS_END /****************************************************************************** Machine Drivers ******************************************************************************/ void zexall_state::zexall(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, XTAL(3'579'545)); m_maincpu->set_addrmap(AS_PROGRAM, &zexall_state::mem_map); /* video hardware */ GENERIC_TERMINAL(config, m_terminal, 0); }
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 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 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 tec1_state::tecjmon(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, XTAL(3'579'545) / 2); m_maincpu->set_addrmap(AS_PROGRAM, &tec1_state::tecjmon_map); m_maincpu->set_addrmap(AS_IO, &tec1_state::tecjmon_io); /* video hardware */ config.set_default_layout(layout_tec1); /* sound hardware */ SPEAKER(config, "mono").front_center(); SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50); WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.05); /* Devices */ CASSETTE(config, m_cass); }
INPUT_PORTS_END void macp_state::macp(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, 2500000); m_maincpu->set_addrmap(AS_PROGRAM, &macp_state::macp_map); m_maincpu->set_addrmap(AS_IO, &macp_state::macp_io); /* video hardware */ //config.set_default_layout(); //I8279 /* sound hardware */ //2x AY8910 genpin_audio(config); }
void pro80_state::pro80(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, XTAL(4'000'000) / 2); m_maincpu->set_addrmap(AS_PROGRAM, &pro80_state::pro80_mem); m_maincpu->set_addrmap(AS_IO, &pro80_state::pro80_io); /* video hardware */ config.set_default_layout(layout_pro80); /* sound hardware */ SPEAKER(config, "mono").front_center(); WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.05); /* Devices */ CASSETTE(config, m_cass); Z80PIO(config, "pio", XTAL(4'000'000) / 2); TIMER(config, "timer_p").configure_periodic(FUNC(pro80_state::timer_p), attotime::from_hz(40000)); // cass read }
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 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 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 */ }
void klax_state::klax2bl(machine_config &config) { klax(config); m_maincpu->set_addrmap(AS_PROGRAM, &klax_state::klax2bl_map); config.device_remove("oki"); // no 6295 here z80_device &audiocpu(Z80(config, "audiocpu", 6000000)); /* ? */ audiocpu.set_addrmap(AS_PROGRAM, &klax_state::bootleg_sound_map); m_gfxdecode->set_info(gfx_klax2bl); // guess, probably something like this // 2 x msm at least on bootleg set 2 (ic18 and ic19) MSM5205(config, "msm", 375000); /* ? */ // msm.vck_legacy_callback().set(FUNC(klax_state::m5205_int1)); /* interrupt function */ // msm.set_prescaler_selector(msm5205_device::MSM5205_S96_4B); /* 4KHz 4-bit */ // msm.add_route(ALL_OUTPUTS, "mono", 0.25); }
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); }
void crospang_state::crospang(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, XTAL(14'318'181)/2); /* 68000P10 @ 7.15909MHz */ m_maincpu->set_addrmap(AS_PROGRAM, &crospang_state::crospang_map); m_maincpu->set_vblank_int("screen", FUNC(crospang_state::irq6_line_hold)); z80_device &audiocpu(Z80(config, "audiocpu", XTAL(14'318'181)/4)); /* 3.579545MHz */ audiocpu.set_addrmap(AS_PROGRAM, &crospang_state::crospang_sound_map); audiocpu.set_addrmap(AS_IO, &crospang_state::crospang_sound_io_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, 64*8); screen.set_visarea(0, 40*8-1, 0, 30*8-1); screen.set_screen_update(FUNC(crospang_state::screen_update_crospang)); screen.set_palette("palette"); PALETTE(config, "palette").set_format(palette_device::xRGB_555, 0x300); GFXDECODE(config, m_gfxdecode, "palette", gfx_crospang); DECO_SPRITE(config, m_sprgen, 0); m_sprgen->set_gfx_region(0); m_sprgen->set_is_bootleg(true); m_sprgen->set_offsets(5, 7); m_sprgen->set_gfxdecode_tag(m_gfxdecode); /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); ym3812_device &ymsnd(YM3812(config, "ymsnd", XTAL(14'318'181)/4)); /* 3.579545MHz */ ymsnd.irq_handler().set_inputline("audiocpu", 0); ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0); okim6295_device &oki(OKIM6295(config, "oki", XTAL(14'318'181)/16, okim6295_device::PIN7_HIGH)); // 1.789772MHz or 0.894886MHz?? & pin 7 not verified oki.add_route(ALL_OUTPUTS, "mono", 1.0); }
GFXDECODE_END /************************** * Machine Drivers * **************************/ void supercrd_state::supercrd(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, MASTER_CLOCK/8); /* 2MHz, guess */ m_maincpu->set_addrmap(AS_PROGRAM, &supercrd_state::supercrd_map); // NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // I8255(config, "ppi8255_0", 0); // I8255(config, "ppi8255_1", 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((124+1)*4, (30+1)*8); /* Taken from MC6845 init, registers 00 & 04. Normally programmed with (value-1) */ screen.set_visarea(0*4, 96*4-1, 0*8, 29*8-1); /* Taken from MC6845 init, registers 01 & 06 */ screen.set_screen_update(FUNC(supercrd_state::screen_update_supercrd)); GFXDECODE(config, m_gfxdecode, "palette", gfx_supercrd); PALETTE(config, "palette", FUNC(supercrd_state::supercrd_palette), 0x200); // mc6845_device &crtc(MC6845(config, "crtc", MASTER_CLOCK/8)); // crtc.set_screen("screen"); // crtc.set_show_border_area(false); // crtc.set_char_width(4); /* sound hardware */ SPEAKER(config, "mono").front_center(); // .add_route(ALL_OUTPUTS, "mono", 0.75); }
void pulsar_state::pulsar(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, 4_MHz_XTAL); m_maincpu->set_addrmap(AS_PROGRAM, &pulsar_state::mem_map); m_maincpu->set_addrmap(AS_IO, &pulsar_state::io_map); m_maincpu->set_daisy_config(daisy_chain_intf); /* Devices */ i8255_device &ppi(I8255(config, "ppi")); ppi.out_pa_callback().set(FUNC(pulsar_state::ppi_pa_w)); ppi.out_pb_callback().set(FUNC(pulsar_state::ppi_pb_w)); ppi.in_pc_callback().set(FUNC(pulsar_state::ppi_pc_r)); ppi.out_pc_callback().set(FUNC(pulsar_state::ppi_pc_w)); MSM5832(config, "rtc", 32.768_kHz_XTAL); z80dart_device& dart(Z80DART(config, "dart", 4_MHz_XTAL)); dart.out_txda_callback().set("rs232", FUNC(rs232_port_device::write_txd)); dart.out_dtra_callback().set("rs232", FUNC(rs232_port_device::write_dtr)); dart.out_rtsa_callback().set("rs232", FUNC(rs232_port_device::write_rts)); dart.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal")); rs232.rxd_handler().set("dart", FUNC(z80dart_device::rxa_w)); rs232.cts_handler().set("dart", FUNC(z80dart_device::ctsa_w)); rs232.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal)); com8116_device &brg(COM8116(config, "brg", 5.0688_MHz_XTAL)); // Schematic has the labels for FT and FR the wrong way around, but the pin numbers are correct. brg.fr_handler().set("dart", FUNC(z80dart_device::txca_w)); brg.fr_handler().append("dart", FUNC(z80dart_device::rxca_w)); brg.ft_handler().set("dart", FUNC(z80dart_device::txcb_w)); brg.ft_handler().append("dart", FUNC(z80dart_device::rxcb_w)); FD1797(config, m_fdc, 4_MHz_XTAL / 2); FLOPPY_CONNECTOR(config, "fdc:0", pulsar_floppies, "flop", floppy_image_device::default_floppy_formats).enable_sound(true); FLOPPY_CONNECTOR(config, "fdc:1", pulsar_floppies, "flop", floppy_image_device::default_floppy_formats).enable_sound(true); }
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. }