INPUT_PORTS_END //------------------------------------------------- // device_add_mconfig - add device configuration //------------------------------------------------- void gottlieb_sound_r1_device::device_add_mconfig(machine_config &config) { // audio CPU m6502_device &audiocpu(M6502(config, "audiocpu", SOUND1_CLOCK/4)); // the board can be set to /2 as well audiocpu.set_addrmap(AS_PROGRAM, &gottlieb_sound_r1_device::gottlieb_sound_r1_map); INPUT_MERGER_ANY_HIGH(config, "nmi").output_handler().set_inputline("audiocpu", INPUT_LINE_NMI); // I/O configuration RIOT6532(config, m_riot, SOUND1_CLOCK/4); m_riot->in_pb_callback().set_ioport("SB1"); m_riot->out_pb_callback().set("nmi", FUNC(input_merger_device::in_w<0>)).bit(7).invert(); // unsure if this is ever used, but the NMI is connected to the RIOT's PB7 m_riot->irq_callback().set_inputline("audiocpu", M6502_IRQ_LINE); // sound devices DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, *this, 0.25); // unknown DAC voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref")); vref.set_output(5.0); vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); }
void 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 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); }
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 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 gottlieb_sound_r0_device::device_add_mconfig(machine_config &config) { // audio CPU M6502(config, m_audiocpu, SOUND1_CLOCK/4); // M6503 - clock is a gate, a resistor and a capacitor. Freq unknown. m_audiocpu->set_addrmap(AS_PROGRAM, &gottlieb_sound_r0_device::gottlieb_sound_r0_map); // I/O configuration MOS6530(config, m_r6530, SOUND1_CLOCK/4); // unknown - same as cpu m_r6530->out_pa_callback().set("dac", FUNC(dac_byte_interface::data_w)); m_r6530->in_pb_callback().set(FUNC(gottlieb_sound_r0_device::r6530b_r)); // sound devices DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, *this, 0.25); // unknown DAC voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref")); vref.set_output(5.0); vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); }
void matmania_state::maniach(machine_config &config) { /* basic machine hardware */ M6502(config, m_maincpu, 1500000); /* 1.5 MHz ???? */ m_maincpu->set_addrmap(AS_PROGRAM, &matmania_state::maniach_map); m_maincpu->set_vblank_int("screen", FUNC(matmania_state::irq0_line_hold)); MC6809E(config, m_audiocpu, 1500000); /* 1.5 MHz ???? (HD68A09EP) */ m_audiocpu->set_addrmap(AS_PROGRAM, &matmania_state::maniach_sound_map); TAITO68705_MCU(config, m_mcu, 1500000*2); /* (don't know really how fast, but it doesn't need to even be this fast) */ config.m_minimum_quantum = attotime::from_hz(6000); /* 100 CPU slice per frame - high interleaving to sync main and mcu */ /* 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_maniach)); m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_maniach); PALETTE(config, m_palette, FUNC(matmania_state::matmania_palette), 64 + 16); /* sound hardware */ SPEAKER(config, "speaker").front_center(); GENERIC_LATCH_8(config, m_soundlatch); ym3526_device &ymsnd(YM3526(config, "ymsnd", 3600000)); ymsnd.irq_handler().set_inputline(m_audiocpu, M6809_FIRQ_LINE); ymsnd.add_route(ALL_OUTPUTS, "speaker", 1.0); 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); }
INPUT_PORTS_END void nbmj8900_state::ohpaipee(machine_config &config) { /* basic machine hardware */ Z80(config, m_maincpu, 20000000/4); /* 5.00 MHz ? */ m_maincpu->set_addrmap(AS_PROGRAM, &nbmj8900_state::ohpaipee_map); m_maincpu->set_addrmap(AS_IO, &nbmj8900_state::ohpaipee_io_map); m_maincpu->set_vblank_int("screen", FUNC(nbmj8900_state::irq0_line_hold)); NB1413M3(config, m_nb1413m3, 0, NB1413M3_OHPAIPEE); /* 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(0, 512-1, 8, 248-1); m_screen->set_screen_update(FUNC(nbmj8900_state::screen_update)); m_screen->set_palette("palette"); PALETTE(config, "palette").set_entries(256); /* sound hardware */ SPEAKER(config, "speaker").front_center(); YM3812(config, "ymsnd", 2500000).add_route(ALL_OUTPUTS, "speaker", 0.7); DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.42); // 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); }
void n8080_state::helifire_sound(machine_config &config) { MCFG_SOUND_START_OVERRIDE(n8080_state,helifire) MCFG_SOUND_RESET_OVERRIDE(n8080_state,helifire) /* basic machine hardware */ I8035(config, m_audiocpu, 6000000); m_audiocpu->set_addrmap(AS_PROGRAM, &n8080_state::n8080_sound_cpu_map); m_audiocpu->set_addrmap(AS_IO, &n8080_state::helifire_sound_io_map); m_audiocpu->t0_in_cb().set(FUNC(n8080_state::helifire_8035_t0_r)); m_audiocpu->t1_in_cb().set(FUNC(n8080_state::helifire_8035_t1_r)); m_audiocpu->p2_in_cb().set(FUNC(n8080_state::helifire_8035_p2_r)); m_audiocpu->p1_out_cb().set("helifire_dac", FUNC(dac_byte_interface::data_w)); m_audiocpu->p2_out_cb().set(FUNC(n8080_state::helifire_sound_ctrl_w)); TIMER(config, "helifire_dac_volume_timer").configure_periodic(FUNC(n8080_state::helifire_dac_volume_timer), attotime::from_hz(1000)); /* sound hardware */ SPEAKER(config, "speaker").front_center(); DAC_8BIT_R2R(config, m_helifire_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.15); // unknown DAC voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0)); vref.add_route(0, "helifire_dac", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "helifire_dac", -1.0, DAC_VREF_NEG_INPUT); }
void mrgame_state::mrgame(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, 6_MHz_XTAL); m_maincpu->set_addrmap(AS_PROGRAM, &mrgame_state::main_map); m_maincpu->set_periodic_int(FUNC(mrgame_state::irq1_line_hold), attotime::from_hz(183)); Z80(config, m_videocpu, 18.432_MHz_XTAL / 6); m_videocpu->set_addrmap(AS_PROGRAM, &mrgame_state::video_map); Z80(config, m_audiocpu1, 4_MHz_XTAL); m_audiocpu1->set_addrmap(AS_PROGRAM, &mrgame_state::audio1_map); m_audiocpu1->set_addrmap(AS_IO, &mrgame_state::audio1_io); Z80(config, m_audiocpu2, 4_MHz_XTAL); m_audiocpu2->set_addrmap(AS_PROGRAM, &mrgame_state::audio2_map); m_audiocpu2->set_addrmap(AS_IO, &mrgame_state::audio2_io); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // 5564 (x2) + battery LS259(config, m_selectlatch); // 5B m_selectlatch->q_out_cb<0>().set(FUNC(mrgame_state::video_a11_w)); m_selectlatch->q_out_cb<1>().set(FUNC(mrgame_state::nmi_intst_w)); m_selectlatch->q_out_cb<3>().set(FUNC(mrgame_state::video_a12_w)); m_selectlatch->q_out_cb<4>().set(FUNC(mrgame_state::video_a13_w)); m_selectlatch->q_out_cb<6>().set(FUNC(mrgame_state::flip_w)); //watchdog_timer_device &watchdog(WATCHDOG_TIMER(config, "watchdog")); // LS393 at 5D (video board) driven by VBLANK //watchdog.set_vblank_count("screen", 8); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_raw(18.432_MHz_XTAL / 3, 384, 0, 256, 264, 8, 248); // If you align with X on test screen some info is chopped off screen.set_screen_update(FUNC(mrgame_state::screen_update_mrgame)); screen.set_palette(m_palette); screen.screen_vblank().set(FUNC(mrgame_state::vblank_nmi_w)); PALETTE(config, m_palette, FUNC(mrgame_state::mrgame_palette), 64); GFXDECODE(config, m_gfxdecode, m_palette, gfx_mrgame); /* Sound */ SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); DAC_8BIT_R2R(config, "ldac", 0).add_route(ALL_OUTPUTS, "lspeaker", 0.25); // unknown DAC DAC_8BIT_R2R(config, "rdac", 0).add_route(ALL_OUTPUTS, "rspeaker", 0.25); // unknown DAC dac_8bit_r2r_device &dacvol(DAC_8BIT_R2R(config, "dacvol", 0)); // unknown DAC dacvol.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT); dacvol.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT); dacvol.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT); dacvol.add_route(0, "rdac", -1.0, DAC_VREF_NEG_INPUT); voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0)); vref.set_output(5.0); vref.add_route(0, "dacvol", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dacvol", -1.0, DAC_VREF_NEG_INPUT); tms5220_device &tms(TMS5220(config, "tms", 672000)); // uses a RC combination. 672k copied from jedi.h tms.ready_cb().set_inputline("audiocpu2", Z80_INPUT_LINE_BOGUSWAIT); tms.add_route(ALL_OUTPUTS, "lspeaker", 1.0); tms.add_route(ALL_OUTPUTS, "rspeaker", 1.0); /* Devices */ TIMER(config, "irq_timer").configure_periodic(FUNC(mrgame_state::irq_timer), attotime::from_hz(16000)); //ugh i8255_device &ppi(I8255A(config, "ppi")); ppi.in_pa_callback().set(FUNC(mrgame_state::porta_r)); ppi.out_pb_callback().set(FUNC(mrgame_state::portb_w)); ppi.in_pc_callback().set(FUNC(mrgame_state::portc_r)); }