Previous 199869 Revisions Next

r18809 Friday 2nd November, 2012 at 14:26:57 UTC by Robbbert
Williams Pinball : WIP
[src/mame/drivers]s3.c s4.c s6.c s6a.c s7.c s8.c s9.c

trunk/src/mame/drivers/s4.c
r18808r18809
3939   m_maincpu(*this, "maincpu"),
4040   m_audiocpu(*this, "audiocpu"),
4141   m_dac(*this, "dac"),
42   m_pia0(*this, "pia0"),
43   m_pia1(*this, "pia1"),
44   m_pia2(*this, "pia2"),
45   m_pia3(*this, "pia3"),
46   m_pia4(*this, "pia4")
42   m_pia22(*this, "pia22"),
43   m_pia24(*this, "pia24"),
44   m_pia28(*this, "pia28"),
45   m_pia30(*this, "pia30"),
46   m_pias(*this, "pias")
4747   { }
4848
4949   DECLARE_READ8_MEMBER(dac_r);
r18808r18809
5757   DECLARE_READ8_MEMBER(dips_r);
5858   DECLARE_READ8_MEMBER(switch_r);
5959   DECLARE_WRITE8_MEMBER(switch_w);
60   DECLARE_READ_LINE_MEMBER(pia2_ca1_r);
61   DECLARE_READ_LINE_MEMBER(pia2_cb1_r);
62   DECLARE_READ_LINE_MEMBER(pia4_cb1_r);
63   DECLARE_WRITE_LINE_MEMBER(pia0_ca2_w) { }; //ST5
64   DECLARE_WRITE_LINE_MEMBER(pia0_cb2_w) { }; //ST-solenoids enable
65   DECLARE_WRITE_LINE_MEMBER(pia1_ca2_w) { }; //ST2
66   DECLARE_WRITE_LINE_MEMBER(pia1_cb2_w) { }; //ST1
67   DECLARE_WRITE_LINE_MEMBER(pia2_ca2_w) { }; //diag leds enable
68   DECLARE_WRITE_LINE_MEMBER(pia2_cb2_w) { }; //ST6
69   DECLARE_WRITE_LINE_MEMBER(pia3_ca2_w) { }; //ST4
70   DECLARE_WRITE_LINE_MEMBER(pia3_cb2_w) { }; //ST3
60   DECLARE_READ_LINE_MEMBER(pia28_ca1_r);
61   DECLARE_READ_LINE_MEMBER(pia28_cb1_r);
62   DECLARE_READ_LINE_MEMBER(pias_cb1_r);
63   DECLARE_WRITE_LINE_MEMBER(pia22_ca2_w) { }; //ST5
64   DECLARE_WRITE_LINE_MEMBER(pia22_cb2_w) { }; //ST-solenoids enable
65   DECLARE_WRITE_LINE_MEMBER(pia24_ca2_w) { }; //ST2
66   DECLARE_WRITE_LINE_MEMBER(pia24_cb2_w) { }; //ST1
67   DECLARE_WRITE_LINE_MEMBER(pia28_ca2_w) { }; //diag leds enable
68   DECLARE_WRITE_LINE_MEMBER(pia28_cb2_w) { }; //ST6
69   DECLARE_WRITE_LINE_MEMBER(pia30_ca2_w) { }; //ST4
70   DECLARE_WRITE_LINE_MEMBER(pia30_cb2_w) { }; //ST3
7171   TIMER_DEVICE_CALLBACK_MEMBER(irq);
7272   DECLARE_INPUT_CHANGED_MEMBER(main_nmi);
7373   DECLARE_INPUT_CHANGED_MEMBER(audio_nmi);
r18808r18809
7979   required_device<cpu_device> m_maincpu;
8080   optional_device<cpu_device> m_audiocpu;
8181   optional_device<dac_device> m_dac;
82   required_device<pia6821_device> m_pia0;
83   required_device<pia6821_device> m_pia1;
84   required_device<pia6821_device> m_pia2;
85   required_device<pia6821_device> m_pia3;
86   optional_device<pia6821_device> m_pia4;
82   required_device<pia6821_device> m_pia22;
83   required_device<pia6821_device> m_pia24;
84   required_device<pia6821_device> m_pia28;
85   required_device<pia6821_device> m_pia30;
86   optional_device<pia6821_device> m_pias;
8787private:
8888   UINT8 m_t_c;
8989   UINT8 m_sound_data;
r18808r18809
9898   ADDRESS_MAP_GLOBAL_MASK(0x7fff)
9999   AM_RANGE(0x0000, 0x00ff) AM_RAM
100100   AM_RANGE(0x0100, 0x01ff) AM_RAM AM_SHARE("nvram")
101   AM_RANGE(0x2200, 0x2203) AM_DEVREADWRITE("pia0", pia6821_device, read, write) // solenoids
102   AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia1", pia6821_device, read, write) // lamps
103   AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia2", pia6821_device, read, write) // display
104   AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia3", pia6821_device, read, write) // inputs
101   AM_RANGE(0x2200, 0x2203) AM_DEVREADWRITE("pia22", pia6821_device, read, write) // solenoids
102   AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps
103   AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display
104   AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs
105105   AM_RANGE(0x6000, 0x7fff) AM_ROM
106106ADDRESS_MAP_END
107107
108108static ADDRESS_MAP_START( s4_audio_map, AS_PROGRAM, 8, s4_state )
109   ADDRESS_MAP_GLOBAL_MASK(0x7fff)
109110   AM_RANGE(0x0000, 0x00ff) AM_RAM
110   AM_RANGE(0x0400, 0x0403) AM_MIRROR(0x8000) AM_DEVREADWRITE("pia4", pia6821_device, read, write) // sounds
111   AM_RANGE(0x3000, 0x7fff) AM_MIRROR(0x8000) AM_ROM
111   AM_RANGE(0x0400, 0x0403) AM_DEVREADWRITE("pias", pia6821_device, read, write) // sounds
112   AM_RANGE(0x7800, 0x7fff) AM_ROM
112113ADDRESS_MAP_END
113114
114115static INPUT_PORTS_START( s4 )
r18808r18809
296297         //m_samples->start(1, x); // 10k chime
297298   }
298299   else
299   {printf("%X ",data);
300   {
300301      m_sound_data = ioport("SND")->read();
301302      if (BIT(data, 0))
302303         m_sound_data &= 0xfe;
r18808r18809
313314      if (BIT(data, 4))
314315         m_sound_data &= 0x7f;
315316
316      m_cb1 = ((m_sound_data & 0x7f) != 0x7f);
317      m_cb1 = ((m_sound_data & 0x9f) != 0x9f);
317318
318      m_pia4->cb1_w(m_cb1);
319      m_pias->cb1_w(m_cb1);
319320   }
320321
321322   if (BIT(data, 5))
322323      m_samples->start(0, 6); // knocker
323324}
324325
325static const pia6821_interface pia0_intf =
326static const pia6821_interface pia22_intf =
326327{
327328   DEVCB_NULL,      /* port A in */
328329   DEVCB_NULL,      /* port B in */
r18808r18809
332333   DEVCB_NULL,      /* line CB2 in */
333334   DEVCB_DRIVER_MEMBER(s4_state, sol0_w),      /* port A out */
334335   DEVCB_DRIVER_MEMBER(s4_state, sol1_w),      /* port B out */
335   DEVCB_DRIVER_LINE_MEMBER(s4_state, pia0_ca2_w),      /* line CA2 out */
336   DEVCB_DRIVER_LINE_MEMBER(s4_state, pia0_cb2_w),      /* line CB2 out */
336   DEVCB_DRIVER_LINE_MEMBER(s4_state, pia22_ca2_w),      /* line CA2 out */
337   DEVCB_DRIVER_LINE_MEMBER(s4_state, pia22_cb2_w),      /* line CB2 out */
337338   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE),      /* IRQA */
338339   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE)      /* IRQB */
339340};
r18808r18809
347348{
348349}
349350
350static const pia6821_interface pia1_intf =
351static const pia6821_interface pia24_intf =
351352{
352353   DEVCB_NULL,      /* port A in */
353354   DEVCB_NULL,      /* port B in */
r18808r18809
357358   DEVCB_NULL,      /* line CB2 in */
358359   DEVCB_DRIVER_MEMBER(s4_state, lamp0_w),      /* port A out */
359360   DEVCB_DRIVER_MEMBER(s4_state, lamp1_w),      /* port B out */
360   DEVCB_DRIVER_LINE_MEMBER(s4_state, pia1_ca2_w),      /* line CA2 out */
361   DEVCB_DRIVER_LINE_MEMBER(s4_state, pia1_cb2_w),      /* line CB2 out */
361   DEVCB_DRIVER_LINE_MEMBER(s4_state, pia24_ca2_w),      /* line CA2 out */
362   DEVCB_DRIVER_LINE_MEMBER(s4_state, pia24_cb2_w),      /* line CB2 out */
362363   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE),      /* IRQA */
363364   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE)      /* IRQB */
364365};
365366
366READ_LINE_MEMBER( s4_state::pia2_ca1_r )
367READ_LINE_MEMBER( s4_state::pia28_ca1_r )
367368{
368369   return BIT(ioport("DIAGS")->read(), 2); // advance button
369370}
370371
371READ_LINE_MEMBER( s4_state::pia2_cb1_r )
372READ_LINE_MEMBER( s4_state::pia28_cb1_r )
372373{
373374   return BIT(ioport("DIAGS")->read(), 3); // auto/manual switch
374375}
r18808r18809
415416   m_data_ok = false;
416417}
417418
418static const pia6821_interface pia2_intf =
419static const pia6821_interface pia28_intf =
419420{
420421   DEVCB_DRIVER_MEMBER(s4_state, dips_r),      /* port A in */
421422   DEVCB_NULL,      /* port B in */
422   DEVCB_DRIVER_LINE_MEMBER(s4_state, pia2_ca1_r),      /* line CA1 in */
423   DEVCB_DRIVER_LINE_MEMBER(s4_state, pia2_cb1_r),      /* line CB1 in */
423   DEVCB_DRIVER_LINE_MEMBER(s4_state, pia28_ca1_r),      /* line CA1 in */
424   DEVCB_DRIVER_LINE_MEMBER(s4_state, pia28_cb1_r),      /* line CB1 in */
424425   DEVCB_NULL,      /* line CA2 in */
425426   DEVCB_NULL,      /* line CB2 in */
426427   DEVCB_DRIVER_MEMBER(s4_state, dig0_w),      /* port A out */
427428   DEVCB_DRIVER_MEMBER(s4_state, dig1_w),      /* port B out */
428   DEVCB_DRIVER_LINE_MEMBER(s4_state, pia2_ca2_w),      /* line CA2 out */
429   DEVCB_DRIVER_LINE_MEMBER(s4_state, pia2_cb2_w),      /* line CB2 out */
429   DEVCB_DRIVER_LINE_MEMBER(s4_state, pia28_ca2_w),      /* line CA2 out */
430   DEVCB_DRIVER_LINE_MEMBER(s4_state, pia28_cb2_w),      /* line CB2 out */
430431   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE),      /* IRQA */
431432   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE)      /* IRQB */
432433};
r18808r18809
435436{
436437   char kbdrow[8];
437438   sprintf(kbdrow,"X%X",m_kbdrow);
438   return ioport(kbdrow)->read();
439   return ~ioport(kbdrow)->read();
439440}
440441
441442WRITE8_MEMBER( s4_state::switch_w )
r18808r18809
443444   m_kbdrow = data;
444445}
445446
446static const pia6821_interface pia3_intf =
447static const pia6821_interface pia30_intf =
447448{
448449   DEVCB_DRIVER_MEMBER(s4_state, switch_r),      /* port A in */
449450   DEVCB_NULL,      /* port B in */
r18808r18809
453454   DEVCB_NULL,      /* line CB2 in */
454455   DEVCB_NULL,      /* port A out */
455456   DEVCB_DRIVER_MEMBER(s4_state, switch_w),      /* port B out */
456   DEVCB_DRIVER_LINE_MEMBER(s4_state, pia3_ca2_w),      /* line CA2 out */
457   DEVCB_DRIVER_LINE_MEMBER(s4_state, pia3_cb2_w),      /* line CB2 out */
457   DEVCB_DRIVER_LINE_MEMBER(s4_state, pia30_ca2_w),      /* line CA2 out */
458   DEVCB_DRIVER_LINE_MEMBER(s4_state, pia30_cb2_w),      /* line CB2 out */
458459   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE),      /* IRQA */
459460   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE)      /* IRQB */
460461};
461462
462READ_LINE_MEMBER( s4_state::pia4_cb1_r )
463READ_LINE_MEMBER( s4_state::pias_cb1_r )
463464{
464465   return m_cb1;
465466}
466467
467468READ8_MEMBER( s4_state::dac_r )
468{printf("%X ",m_sound_data);
469{
469470   return m_sound_data;
470471}
471472
r18808r18809
474475   m_dac->write_unsigned8(data);
475476}
476477
477static const pia6821_interface pia4_intf =
478static const pia6821_interface pias_intf =
478479{
479480   DEVCB_NULL,      /* port A in */
480481   DEVCB_DRIVER_MEMBER(s4_state, dac_r),      /* port B in */
481482   DEVCB_NULL,      /* line CA1 in */
482   DEVCB_DRIVER_LINE_MEMBER(s4_state, pia4_cb1_r),      /* line CB1 in */
483   DEVCB_DRIVER_LINE_MEMBER(s4_state, pias_cb1_r),      /* line CB1 in */
483484   DEVCB_NULL,      /* line CA2 in */
484485   DEVCB_NULL,      /* line CB2 in */
485486   DEVCB_DRIVER_MEMBER(s4_state, dac_w),      /* port A out */
r18808r18809
502503   /* basic machine hardware */
503504   MCFG_CPU_ADD("maincpu", M6802, 3580000)
504505   MCFG_CPU_PROGRAM_MAP(s4_main_map)
505   MCFG_TIMER_DRIVER_ADD_PERIODIC("irq", s4_state, irq, attotime::from_hz(1000))
506   MCFG_TIMER_DRIVER_ADD_PERIODIC("irq", s4_state, irq, attotime::from_hz(250))
506507   MCFG_MACHINE_RESET_OVERRIDE(s4_state, s4)
507508
508509   /* Video */
r18808r18809
512513   MCFG_FRAGMENT_ADD( genpin_audio )
513514
514515   /* Devices */
515   MCFG_PIA6821_ADD("pia0", pia0_intf)
516   MCFG_PIA6821_ADD("pia1", pia1_intf)
517   MCFG_PIA6821_ADD("pia2", pia2_intf)
518   MCFG_PIA6821_ADD("pia3", pia3_intf)
516   MCFG_PIA6821_ADD("pia22", pia22_intf)
517   MCFG_PIA6821_ADD("pia24", pia24_intf)
518   MCFG_PIA6821_ADD("pia28", pia28_intf)
519   MCFG_PIA6821_ADD("pia30", pia30_intf)
519520   MCFG_NVRAM_ADD_1FILL("nvram")
520521MACHINE_CONFIG_END
521522
r18808r18809
527528   MCFG_SPEAKER_STANDARD_MONO("mono")
528529   MCFG_SOUND_ADD("dac", DAC, 0)
529530   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
530   MCFG_PIA6821_ADD("pia4", pia4_intf)
531   MCFG_PIA6821_ADD("pias", pias_intf)
531532MACHINE_CONFIG_END
532533
533534
r18808r18809
555556ROM_END
556557
557558/*--------------------------------
559/ Tri Zone - Sys.4 (Game #487)
560/-------------------------------*/
561ROM_START(trizn_l1)
562   ROM_REGION(0x10000, "maincpu", 0)
563   ROM_LOAD("gamerom.716", 0x6000, 0x0800, CRC(757091c5) SHA1(00dac6c19b08d2528ea293619c4a39499a1a02c2))
564   ROM_LOAD("green1.716", 0x7000, 0x0800, CRC(2145f8ab) SHA1(ddf63208559a3a08d4e88327c55426b0eed27654))
565   ROM_LOAD("green2.716", 0x7800, 0x0800, CRC(1c978a4a) SHA1(1959184764643d58f1740c54bb74c2aad7d667d2))
566
567   ROM_REGION(0x10000, "audiocpu", 0)
568   ROM_LOAD("sound1.716", 0x7800, 0x0800, CRC(f4190ca3) SHA1(ee234fb5c894fca5876ee6dc7ea8e89e7e0aec9c))
569ROM_END
570
571ROM_START(trizn_t1)
572   ROM_REGION(0x10000, "maincpu", 0)
573   ROM_LOAD("gamerom.716", 0x6000, 0x0800, CRC(757091c5) SHA1(00dac6c19b08d2528ea293619c4a39499a1a02c2))
574   ROM_LOAD("green1.716", 0x7000, 0x0800, CRC(2145f8ab) SHA1(ddf63208559a3a08d4e88327c55426b0eed27654))
575   ROM_LOAD("green2a.716", 0x7800, 0x0800, CRC(16621eec) SHA1(14e1cf5f7227860a3219b2b79fa66dcf252dce98))
576
577   ROM_REGION(0x10000, "audiocpu", 0)
578   ROM_LOAD("sound1.716", 0x7800, 0x0800, CRC(f4190ca3) SHA1(ee234fb5c894fca5876ee6dc7ea8e89e7e0aec9c))
579ROM_END
580
581/*--------------------------------
582/ Time Warp - Sys.4 (Game #489)
583/-------------------------------*/
584ROM_START(tmwrp_l2)
585   ROM_REGION(0x10000, "maincpu", 0)
586   ROM_LOAD("gamerom.716", 0x6000, 0x0800, CRC(b168df09) SHA1(d4c97714636ce51be2e5f8cc5af89e10a2f82ac7))
587   ROM_LOAD("green1.716", 0x7000, 0x0800, CRC(2145f8ab) SHA1(ddf63208559a3a08d4e88327c55426b0eed27654))
588   ROM_LOAD("green2.716", 0x7800, 0x0800, CRC(1c978a4a) SHA1(1959184764643d58f1740c54bb74c2aad7d667d2))
589
590   ROM_REGION(0x10000, "audiocpu", 0)
591   ROM_LOAD("sound1.716", 0x7800, 0x0800, CRC(f4190ca3) SHA1(ee234fb5c894fca5876ee6dc7ea8e89e7e0aec9c))
592ROM_END
593
594ROM_START(tmwrp_t2)
595   ROM_REGION(0x10000, "maincpu", 0)
596   ROM_LOAD("gamerom.716", 0x6000, 0x0800, CRC(b168df09) SHA1(d4c97714636ce51be2e5f8cc5af89e10a2f82ac7))
597   ROM_LOAD("green1.716", 0x7000, 0x0800, CRC(2145f8ab) SHA1(ddf63208559a3a08d4e88327c55426b0eed27654))
598   ROM_LOAD("green2a.716", 0x7800, 0x0800, CRC(16621eec) SHA1(14e1cf5f7227860a3219b2b79fa66dcf252dce98))
599
600   ROM_REGION(0x10000, "audiocpu", 0)
601   ROM_LOAD("sound1.716", 0x7800, 0x0800, CRC(f4190ca3) SHA1(ee234fb5c894fca5876ee6dc7ea8e89e7e0aec9c))
602ROM_END
603
604/*--------------------------------
558605/ Stellar Wars - Sys.4 (Game #490)
559606/-------------------------------*/
560607ROM_START(stlwr_l2)
r18808r18809
567614   ROM_LOAD("sound1.716", 0x7800, 0x0800, CRC(f4190ca3) SHA1(ee234fb5c894fca5876ee6dc7ea8e89e7e0aec9c))
568615ROM_END
569616
617/*-----------------------------
618/ Scorpion - Sys.6 (Game #494)
619/----------------------------*/
620ROM_START(scrpn_l1)
621   ROM_REGION(0x10000, "maincpu", 0)
622   ROM_LOAD("gamerom.716", 0x6000, 0x0800, CRC(881109a9) SHA1(53d4275c76b47b68a74209fe660d943a51e90eca))
623   ROM_LOAD("green1.716", 0x7000, 0x0800, CRC(2145f8ab) SHA1(ddf63208559a3a08d4e88327c55426b0eed27654))
624   ROM_LOAD("green2.716", 0x7800, 0x0800, CRC(1c978a4a) SHA1(1959184764643d58f1740c54bb74c2aad7d667d2))
625
626   ROM_REGION(0x10000, "audiocpu", 0)
627   ROM_LOAD("sound1.716", 0x7800, 0x0800, CRC(f4190ca3) SHA1(ee234fb5c894fca5876ee6dc7ea8e89e7e0aec9c))
628ROM_END
629
630ROM_START(scrpn_t1)
631   ROM_REGION(0x10000, "maincpu", 0)
632   ROM_LOAD("gamerom.716", 0x6000, 0x0800, CRC(881109a9) SHA1(53d4275c76b47b68a74209fe660d943a51e90eca))
633   ROM_LOAD("green1.716", 0x7000, 0x0800, CRC(2145f8ab) SHA1(ddf63208559a3a08d4e88327c55426b0eed27654))
634   ROM_LOAD("green2a.716", 0x7800, 0x0800, CRC(16621eec) SHA1(14e1cf5f7227860a3219b2b79fa66dcf252dce98))
635
636   ROM_REGION(0x10000, "audiocpu", 0)
637   ROM_LOAD("sound1.716", 0x7800, 0x0800, CRC(f4190ca3) SHA1(ee234fb5c894fca5876ee6dc7ea8e89e7e0aec9c))
638ROM_END
639
570640/* From here, are NOT pinball machines */
571641
572642/*----------------------------
r18808r18809
668738ROM_END
669739
670740
671GAME(1979,flash_l1, 0,        s4a, s4, driver_device, 0, ROT0, "Williams", "Flash (L-1)", GAME_IS_SKELETON_MECHANICAL)
672GAME(1979,flash_t1, flash_l1, s4a, s4, driver_device, 0, ROT0, "Williams", "Flash (T-1) Ted Estes", GAME_IS_SKELETON_MECHANICAL)
673GAME(1979,stlwr_l2, 0,        s4a, s4, driver_device, 0, ROT0, "Williams", "Stellar Wars (L-2)", GAME_MECHANICAL | GAME_NO_SOUND)
674GAME(1978,pomp_l1,  0,        s4a, s4, driver_device, 0, ROT0, "Williams", "Pompeii (Shuffle) (L-1)", GAME_IS_SKELETON_MECHANICAL)
675GAME(1978,arist_l1, 0,        s4a, s4, driver_device, 0, ROT0, "Williams", "Aristocrat (Shuffle) (L-1)", GAME_IS_SKELETON_MECHANICAL)
676GAME(1978,topaz_l1, 0,        s4a, s4, driver_device, 0, ROT0, "Williams", "Topaz (Shuffle) (L-1)", GAME_IS_SKELETON_MECHANICAL)
677GAME(1979,taurs_l1, 0,        s4a, s4, driver_device, 0, ROT0, "Williams", "Taurus (Shuffle) (L-1)", GAME_IS_SKELETON_MECHANICAL)
678GAME(1979,kingt_l1, 0,        s4a, s4, driver_device, 0, ROT0, "Williams", "King Tut (Shuffle) (L-1)", GAME_IS_SKELETON_MECHANICAL)
679GAME(1980,omni_l1,  0,        s4a, s4, driver_device, 0, ROT0, "Williams", "Omni (Shuffle) (L-1)", GAME_IS_SKELETON_MECHANICAL)
680GAME(1983,bstrk_l1, 0,        s4,  s4, driver_device, 0, ROT0, "Williams", "Big Strike (Shuffle) (L-1)", GAME_IS_SKELETON_MECHANICAL)
681GAME(1983,tstrk_l1, 0,        s4,  s4, driver_device, 0, ROT0, "Williams", "Triple Strike (Shuffle) (L-1)", GAME_IS_SKELETON_MECHANICAL)
741GAME( 1979, flash_l1, 0,        s4a, s4, driver_device, 0, ROT0, "Williams", "Flash (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
742GAME( 1979, flash_t1, flash_l1, s4a, s4, driver_device, 0, ROT0, "Williams", "Flash (T-1) Ted Estes", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
743GAME( 1978, trizn_l1, 0,        s4a, s4, driver_device, 0, ROT0, "Williams", "Tri Zone (L-1)", GAME_MECHANICAL | GAME_NO_SOUND)
744GAME( 1978, trizn_t1, trizn_l1, s4a, s4, driver_device, 0, ROT0, "Williams", "Tri Zone (T-1)", GAME_MECHANICAL | GAME_NO_SOUND)
745GAME( 1979, tmwrp_l2, 0,        s4a, s4, driver_device, 0, ROT0, "Williams", "Time Warp (L-2)", GAME_MECHANICAL | GAME_NO_SOUND)
746GAME( 1979, tmwrp_t2, tmwrp_l2, s4a, s4, driver_device, 0, ROT0, "Williams", "Time Warp (T-2)", GAME_MECHANICAL | GAME_NO_SOUND)
747GAME( 1979, stlwr_l2, 0,        s4a, s4, driver_device, 0, ROT0, "Williams", "Stellar Wars (L-2)", GAME_MECHANICAL | GAME_NO_SOUND)
748GAME( 1980, scrpn_l1, 0,        s4a, s4, driver_device, 0, ROT0, "Williams", "Scorpion (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
749GAME( 1980, scrpn_t1, scrpn_l1, s4a, s4, driver_device, 0, ROT0, "Williams", "Scorpion (T-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
750GAME( 1978, pomp_l1,  0,        s4a, s4, driver_device, 0, ROT0, "Williams", "Pompeii (Shuffle) (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
751GAME( 1978, arist_l1, 0,        s4a, s4, driver_device, 0, ROT0, "Williams", "Aristocrat (Shuffle) (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
752GAME( 1978, topaz_l1, 0,        s4a, s4, driver_device, 0, ROT0, "Williams", "Topaz (Shuffle) (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
753GAME( 1979, taurs_l1, 0,        s4a, s4, driver_device, 0, ROT0, "Williams", "Taurus (Shuffle) (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
754GAME( 1979, kingt_l1, 0,        s4a, s4, driver_device, 0, ROT0, "Williams", "King Tut (Shuffle) (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
755GAME( 1980, omni_l1,  0,        s4a, s4, driver_device, 0, ROT0, "Williams", "Omni (Shuffle) (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
756GAME( 1983, bstrk_l1, 0,        s4,  s4, driver_device, 0, ROT0, "Williams", "Big Strike (Shuffle) (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
757GAME( 1983, tstrk_l1, 0,        s4,  s4, driver_device, 0, ROT0, "Williams", "Triple Strike (Shuffle) (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
trunk/src/mame/drivers/s6.c
r18808r18809
1616#include "machine/genpin.h"
1717#include "cpu/m6800/m6800.h"
1818#include "machine/6821pia.h"
19#include "sound/hc55516.h"
1920#include "sound/dac.h"
2021#include "s6.lh"
2122
r18808r18809
2627   s6_state(const machine_config &mconfig, device_type type, const char *tag)
2728      : genpin_class(mconfig, type, tag),
2829   m_maincpu(*this, "maincpu"),
30   m_audiocpu(*this, "audiocpu"),
2931   m_dac(*this, "dac"),
30   m_pia0(*this, "pia0"),
31   m_pia1(*this, "pia1"),
32   m_pia2(*this, "pia2"),
33   m_pia3(*this, "pia3"),
34   m_pia4(*this, "pia4")
32   m_hc55516(*this, "hc55516"),
33   m_pias(*this, "pias"),
34   m_pia22(*this, "pia22"),
35   m_pia24(*this, "pia24"),
36   m_pia28(*this, "pia28"),
37   m_pia30(*this, "pia30")
3538   { }
3639
3740   DECLARE_READ8_MEMBER(dac_r);
r18808r18809
4043   DECLARE_WRITE8_MEMBER(dig1_w);
4144   DECLARE_WRITE8_MEMBER(lamp0_w);
4245   DECLARE_WRITE8_MEMBER(lamp1_w);
46   DECLARE_READ8_MEMBER(dips_r);
4347   DECLARE_WRITE8_MEMBER(sol0_w);
4448   DECLARE_WRITE8_MEMBER(sol1_w);
4549   DECLARE_READ8_MEMBER(switch_r);
4650   DECLARE_WRITE8_MEMBER(switch_w);
47   DECLARE_READ_LINE_MEMBER(cb1_r);
51   DECLARE_WRITE8_MEMBER(pias_pb_w) { }; // dummy to stop log filling up
52   DECLARE_READ_LINE_MEMBER(pia28_ca1_r);
53   DECLARE_READ_LINE_MEMBER(pia28_cb1_r);
54   DECLARE_READ_LINE_MEMBER(pias_cb1_r);
55   DECLARE_WRITE_LINE_MEMBER(pias_ca2_w);
56   DECLARE_WRITE_LINE_MEMBER(pias_cb2_w);
57   DECLARE_WRITE_LINE_MEMBER(pia22_ca2_w) { }; //ST5
58   DECLARE_WRITE_LINE_MEMBER(pia22_cb2_w) { }; //ST-solenoids enable
59   DECLARE_WRITE_LINE_MEMBER(pia24_ca2_w) { }; //ST2
60   DECLARE_WRITE_LINE_MEMBER(pia24_cb2_w) { }; //ST1
61   DECLARE_WRITE_LINE_MEMBER(pia28_ca2_w) { }; //diag leds enable
62   DECLARE_WRITE_LINE_MEMBER(pia28_cb2_w) { }; //ST6
63   DECLARE_WRITE_LINE_MEMBER(pia30_ca2_w) { }; //ST4
64   DECLARE_WRITE_LINE_MEMBER(pia30_cb2_w) { }; //ST3
4865   TIMER_DEVICE_CALLBACK_MEMBER(irq);
49   DECLARE_INPUT_CHANGED_MEMBER(nmi);
66   DECLARE_INPUT_CHANGED_MEMBER(main_nmi);
67   DECLARE_INPUT_CHANGED_MEMBER(audio_nmi);
5068   DECLARE_MACHINE_RESET(s6);
5169protected:
5270
5371   // devices
5472   required_device<cpu_device> m_maincpu;
55   optional_device<dac_device> m_dac;
56   required_device<pia6821_device> m_pia0;
57   required_device<pia6821_device> m_pia1;
58   required_device<pia6821_device> m_pia2;
59   required_device<pia6821_device> m_pia3;
60   optional_device<pia6821_device> m_pia4;
73   required_device<cpu_device> m_audiocpu;
74   required_device<dac_device> m_dac;
75   required_device<hc55516_device> m_hc55516;
76   required_device<pia6821_device> m_pias;
77   required_device<pia6821_device> m_pia22;
78   required_device<pia6821_device> m_pia24;
79   required_device<pia6821_device> m_pia28;
80   required_device<pia6821_device> m_pia30;
6181private:
6282   UINT8 m_t_c;
6383   UINT8 m_sound_data;
r18808r18809
7191   ADDRESS_MAP_GLOBAL_MASK(0x7fff)
7292   AM_RANGE(0x0000, 0x00ff) AM_RAM
7393   AM_RANGE(0x0100, 0x01ff) AM_RAM AM_SHARE("nvram")
74   AM_RANGE(0x2200, 0x2203) AM_DEVREADWRITE("pia0", pia6821_device, read, write) // solenoids
75   AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia1", pia6821_device, read, write) // lamps
76   AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia2", pia6821_device, read, write) // display
77   AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia3", pia6821_device, read, write) // inputs
94   AM_RANGE(0x2200, 0x2203) AM_DEVREADWRITE("pia22", pia6821_device, read, write) // solenoids
95   AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps
96   AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display
97   AM_RANGE(0xb000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs
7898   AM_RANGE(0x6000, 0x7fff) AM_ROM
7999ADDRESS_MAP_END
80100
81101static ADDRESS_MAP_START( s6_audio_map, AS_PROGRAM, 8, s6_state )
82   ADDRESS_MAP_GLOBAL_MASK(0x7fff)
83   AM_RANGE(0x0000, 0x007f) AM_RAM
84   AM_RANGE(0x0400, 0x0403) AM_DEVREADWRITE("pia4", pia6821_device, read, write) // sounds
85   AM_RANGE(0x0800, 0x7fff) AM_ROM
102   AM_RANGE(0x0000, 0x00ff) AM_RAM
103   AM_RANGE(0x0400, 0x0403) AM_MIRROR(0x8000) AM_DEVREADWRITE("pias", pia6821_device, read, write)
104   AM_RANGE(0xA000, 0xffff) AM_ROM
86105ADDRESS_MAP_END
87106
88107static INPUT_PORTS_START( s6 )
r18808r18809
160179   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Music") PORT_CODE(KEYCODE_9) PORT_TOGGLE
161180
162181   PORT_START("DIAGS")
163   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Diagnostic") PORT_CODE(KEYCODE_0) PORT_CHANGED_MEMBER(DEVICE_SELF, s6_state, nmi, 1)
182   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Audio Diag") PORT_CODE(KEYCODE_F1) PORT_CHANGED_MEMBER(DEVICE_SELF, s6_state, audio_nmi, 1)
183   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Main Diag") PORT_CODE(KEYCODE_F2) PORT_CHANGED_MEMBER(DEVICE_SELF, s6_state, main_nmi, 1)
184   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Advance") PORT_CODE(KEYCODE_0)
185   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("Manual/Auto") PORT_CODE(KEYCODE_9)
186   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Enter") PORT_CODE(KEYCODE_8)
187
188   PORT_START("DSW0")
189   PORT_DIPNAME( 0x01, 0x01, "SW01" )
190   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
191   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
192   PORT_DIPNAME( 0x02, 0x02, "SW02" )
193   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
194   PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
195   PORT_DIPNAME( 0x04, 0x04, "SW03" )
196   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
197   PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
198   PORT_DIPNAME( 0x08, 0x08, "SW04" )
199   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
200   PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
201   PORT_DIPNAME( 0x10, 0x10, "SW05" )
202   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
203   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
204   PORT_DIPNAME( 0x20, 0x20, "SW06" )
205   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
206   PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
207   PORT_DIPNAME( 0x40, 0x40, "SW07" )
208   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
209   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
210   PORT_DIPNAME( 0x80, 0x80, "SW08" )
211   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
212   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
213
214   PORT_START("DSW1")
215   PORT_DIPNAME( 0x01, 0x01, "SW11" )
216   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
217   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
218   PORT_DIPNAME( 0x02, 0x02, "SW12" )
219   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
220   PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
221   PORT_DIPNAME( 0x04, 0x04, "SW13" )
222   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
223   PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
224   PORT_DIPNAME( 0x08, 0x08, "SW14" )
225   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
226   PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
227   PORT_DIPNAME( 0x10, 0x10, "SW15" )
228   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
229   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
230   PORT_DIPNAME( 0x20, 0x20, "SW16" )
231   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
232   PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
233   PORT_DIPNAME( 0x40, 0x40, "SW17" )
234   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
235   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
236   PORT_DIPNAME( 0x80, 0x80, "SW18" )
237   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
238   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
164239INPUT_PORTS_END
165240
166241MACHINE_RESET_MEMBER( s6_state, s6 )
r18808r18809
168243   m_t_c = 0;
169244}
170245
171INPUT_CHANGED_MEMBER( s6_state::nmi )
246INPUT_CHANGED_MEMBER( s6_state::main_nmi )
172247{
173248   // Diagnostic button sends a pulse to NMI pin
174249   if (newval==CLEAR_LINE)
175250      m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
176251}
177252
253INPUT_CHANGED_MEMBER( s6_state::audio_nmi )
254{
255   // Diagnostic button sends a pulse to NMI pin
256   if (newval==CLEAR_LINE)
257      m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
258}
259
178260WRITE8_MEMBER( s6_state::sol0_w )
179261{
180262   if (BIT(data, 4))
r18808r18809
184266WRITE8_MEMBER( s6_state::sol1_w )
185267{
186268   m_sound_data = ioport("SND")->read(); // 0xff or 0xbf
269
187270   if (BIT(data, 0))
188271      m_sound_data &= 0xfe;
189   else
272
190273   if (BIT(data, 1))
191274      m_sound_data &= 0xfd;
192   else
275
193276   if (BIT(data, 2))
194277      m_sound_data &= 0xfb;
195   else
278
196279   if (BIT(data, 3))
197280      m_sound_data &= 0xf7;
198   else
281
199282   if (BIT(data, 4))
200      m_sound_data &= 0x7f;
283      m_sound_data &= 0xef;
201284
202   if ((m_sound_data & 0xbf) == 0xbf)
203   {
204      m_cb1 = 0;
205      m_pia4->cb1_w(0);
206   }
207   else
208   {
209      m_cb1 = 1;
210      m_pia4->cb1_w(1);
211   }
285   m_cb1 = ((m_sound_data & 0x9f) != 0x9f);
212286
287   m_pias->cb1_w(m_cb1);
288
213289   if (BIT(data, 5))
214290      m_samples->start(0, 6); // knocker
215291}
216292
217static const pia6821_interface pia0_intf =
293static const pia6821_interface pia22_intf =
218294{
219295   DEVCB_NULL,      /* port A in */
220296   DEVCB_NULL,      /* port B in */
r18808r18809
224300   DEVCB_NULL,      /* line CB2 in */
225301   DEVCB_DRIVER_MEMBER(s6_state, sol0_w),      /* port A out */
226302   DEVCB_DRIVER_MEMBER(s6_state, sol1_w),      /* port B out */
227   DEVCB_NULL,      /* line CA2 out */
228   DEVCB_NULL,      /* port CB2 out */
303   DEVCB_DRIVER_LINE_MEMBER(s6_state, pia22_ca2_w),      /* line CA2 out */
304   DEVCB_DRIVER_LINE_MEMBER(s6_state, pia22_cb2_w),      /* line CB2 out */
229305   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE),      /* IRQA */
230306   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE)      /* IRQB */
231307};
r18808r18809
239315{
240316}
241317
242static const pia6821_interface pia1_intf =
318static const pia6821_interface pia24_intf =
243319{
244320   DEVCB_NULL,      /* port A in */
245321   DEVCB_NULL,      /* port B in */
r18808r18809
249325   DEVCB_NULL,      /* line CB2 in */
250326   DEVCB_DRIVER_MEMBER(s6_state, lamp0_w),      /* port A out */
251327   DEVCB_DRIVER_MEMBER(s6_state, lamp1_w),      /* port B out */
252   DEVCB_NULL,      /* line CA2 out */
253   DEVCB_NULL,      /* port CB2 out */
328   DEVCB_DRIVER_LINE_MEMBER(s6_state, pia24_ca2_w),      /* line CA2 out */
329   DEVCB_DRIVER_LINE_MEMBER(s6_state, pia24_cb2_w),      /* line CB2 out */
254330   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE),      /* IRQA */
255331   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE)      /* IRQB */
256332};
257333
334READ_LINE_MEMBER( s6_state::pia28_ca1_r )
335{
336   return BIT(ioport("DIAGS")->read(), 2); // advance button
337}
338
339READ_LINE_MEMBER( s6_state::pia28_cb1_r )
340{
341   return BIT(ioport("DIAGS")->read(), 3); // auto/manual switch
342}
343
344READ8_MEMBER( s6_state::dips_r )
345{
346   if (BIT(ioport("DIAGS")->read(), 4) )
347   {
348      switch (m_strobe)
349      {
350      case 0:
351         return ioport("DSW0")->read() & 15;
352         break;
353      case 1:
354         return ioport("DSW0")->read() << 4;
355         break;
356      case 2:
357         return ioport("DSW1")->read() & 15;
358         break;
359      case 3:
360         return ioport("DSW1")->read() << 4;
361         break;
362      }
363   }
364   return 0xff;
365}
366
258367WRITE8_MEMBER( s6_state::dig0_w )
259368{
260369   m_strobe = data;
r18808r18809
272381   m_data_ok = false;
273382}
274383
275static const pia6821_interface pia2_intf =
384static const pia6821_interface pia28_intf =
276385{
277   DEVCB_NULL,      /* port A in */
386   DEVCB_DRIVER_MEMBER(s6_state, dips_r),      /* port A in */
278387   DEVCB_NULL,      /* port B in */
279   DEVCB_NULL,      /* line CA1 in */
280   DEVCB_NULL,      /* line CB1 in */
388   DEVCB_DRIVER_LINE_MEMBER(s6_state, pia28_ca1_r),      /* line CA1 in */
389   DEVCB_DRIVER_LINE_MEMBER(s6_state, pia28_cb1_r),      /* line CB1 in */
281390   DEVCB_NULL,      /* line CA2 in */
282391   DEVCB_NULL,      /* line CB2 in */
283392   DEVCB_DRIVER_MEMBER(s6_state, dig0_w),      /* port A out */
284393   DEVCB_DRIVER_MEMBER(s6_state, dig1_w),      /* port B out */
285   DEVCB_NULL,      /* line CA2 out */
286   DEVCB_NULL,      /* port CB2 out */
394   DEVCB_DRIVER_LINE_MEMBER(s6_state, pia28_ca2_w),      /* line CA2 out */
395   DEVCB_DRIVER_LINE_MEMBER(s6_state, pia28_cb2_w),      /* line CB2 out */
287396   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE),      /* IRQA */
288397   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE)      /* IRQB */
289398};
r18808r18809
292401{
293402   char kbdrow[8];
294403   sprintf(kbdrow,"X%X",m_kbdrow);
295   return ioport(kbdrow)->read();
404   return ~ioport(kbdrow)->read();
296405}
297406
298407WRITE8_MEMBER( s6_state::switch_w )
r18808r18809
300409   m_kbdrow = data;
301410}
302411
303static const pia6821_interface pia3_intf =
412static const pia6821_interface pia30_intf =
304413{
305414   DEVCB_DRIVER_MEMBER(s6_state, switch_r),      /* port A in */
306415   DEVCB_NULL,      /* port B in */
r18808r18809
310419   DEVCB_NULL,      /* line CB2 in */
311420   DEVCB_NULL,      /* port A out */
312421   DEVCB_DRIVER_MEMBER(s6_state, switch_w),      /* port B out */
313   DEVCB_NULL,      /* line CA2 out */
314   DEVCB_NULL,      /* port CB2 out */
422   DEVCB_DRIVER_LINE_MEMBER(s6_state, pia30_ca2_w),      /* line CA2 out */
423   DEVCB_DRIVER_LINE_MEMBER(s6_state, pia30_cb2_w),      /* line CB2 out */
315424   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE),      /* IRQA */
316425   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE)      /* IRQB */
317426};
318427
319READ_LINE_MEMBER( s6_state::cb1_r )
428READ_LINE_MEMBER( s6_state::pias_cb1_r )
320429{
321430   return m_cb1;
322431}
323432
433WRITE_LINE_MEMBER( s6_state::pias_cb2_w )
434{
435// speech clock
436   hc55516_clock_w(m_hc55516, state);
437}
438
439WRITE_LINE_MEMBER( s6_state::pias_ca2_w )
440{
441// speech data
442   hc55516_digit_w(m_hc55516, state);
443}
444
324445READ8_MEMBER( s6_state::dac_r )
325446{
326447   return m_sound_data;
r18808r18809
331452   m_dac->write_unsigned8(data);
332453}
333454
334static const pia6821_interface pia4_intf =
455static const pia6821_interface pias_intf =
335456{
336457   DEVCB_NULL,      /* port A in */
337458   DEVCB_DRIVER_MEMBER(s6_state, dac_r),      /* port B in */
338459   DEVCB_NULL,      /* line CA1 in */
339   DEVCB_DRIVER_LINE_MEMBER(s6_state, cb1_r),      /* line CB1 in */
460   DEVCB_DRIVER_LINE_MEMBER(s6_state, pias_cb1_r),      /* line CB1 in */
340461   DEVCB_NULL,      /* line CA2 in */
341462   DEVCB_NULL,      /* line CB2 in */
342463   DEVCB_DRIVER_MEMBER(s6_state, dac_w),      /* port A out */
343   DEVCB_NULL,      /* port B out */
344   DEVCB_NULL,      /* line CA2 out */
345   DEVCB_NULL,      /* port CB2 out */
464   DEVCB_DRIVER_MEMBER(s6_state, pias_pb_w),      /* port B out */
465   DEVCB_DRIVER_LINE_MEMBER(s6_state, pias_ca2_w),      /* line CA2 out */
466   DEVCB_DRIVER_LINE_MEMBER(s6_state, pias_cb2_w),      /* line CB2 out */
346467   DEVCB_CPU_INPUT_LINE("audiocpu", M6800_IRQ_LINE),      /* IRQA */
347468   DEVCB_CPU_INPUT_LINE("audiocpu", M6800_IRQ_LINE)      /* IRQB */
348469};
r18808r18809
359480   /* basic machine hardware */
360481   MCFG_CPU_ADD("maincpu", M6802, 3580000) // 6802 or 6808 could be used here
361482   MCFG_CPU_PROGRAM_MAP(s6_main_map)
362   MCFG_TIMER_DRIVER_ADD_PERIODIC("irq", s6_state, irq, attotime::from_hz(1000))
483   MCFG_TIMER_DRIVER_ADD_PERIODIC("irq", s6_state, irq, attotime::from_hz(250))
363484   MCFG_MACHINE_RESET_OVERRIDE(s6_state, s6)
364485
365486   /* Video */
r18808r18809
369490   MCFG_FRAGMENT_ADD( genpin_audio )
370491
371492   /* Devices */
372   MCFG_PIA6821_ADD("pia0", pia0_intf)
373   MCFG_PIA6821_ADD("pia1", pia1_intf)
374   MCFG_PIA6821_ADD("pia2", pia2_intf)
375   MCFG_PIA6821_ADD("pia3", pia3_intf)
493   MCFG_PIA6821_ADD("pia22", pia22_intf)
494   MCFG_PIA6821_ADD("pia24", pia24_intf)
495   MCFG_PIA6821_ADD("pia28", pia28_intf)
496   MCFG_PIA6821_ADD("pia30", pia30_intf)
376497   MCFG_NVRAM_ADD_1FILL("nvram")
377498
378499   /* Add the soundcard */
r18808r18809
380501   MCFG_CPU_PROGRAM_MAP(s6_audio_map)
381502   MCFG_SPEAKER_STANDARD_MONO("mono")
382503   MCFG_SOUND_ADD("dac", DAC, 0)
383   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
384   MCFG_PIA6821_ADD("pia4", pia4_intf)
504   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
505   MCFG_SPEAKER_STANDARD_MONO("speech")
506   MCFG_SOUND_ADD("hc55516", HC55516, 0)
507   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speech", 0.50)
508   MCFG_PIA6821_ADD("pias", pias_intf)
385509MACHINE_CONFIG_END
386510
387/*--------------------------------
388/ Tri Zone - Sys.4 (Game #487)
389/-------------------------------*/
390ROM_START(trizn_l1)
391   ROM_REGION(0x10000, "maincpu", 0)
392   ROM_LOAD("gamerom.716", 0x6000, 0x0800, CRC(757091c5) SHA1(00dac6c19b08d2528ea293619c4a39499a1a02c2))
393   ROM_LOAD("green1.716", 0x7000, 0x0800, CRC(2145f8ab) SHA1(ddf63208559a3a08d4e88327c55426b0eed27654))
394   ROM_LOAD("green2.716", 0x7800, 0x0800, CRC(1c978a4a) SHA1(1959184764643d58f1740c54bb74c2aad7d667d2))
395511
396   ROM_REGION(0x10000, "audiocpu", 0)
397   ROM_LOAD("sound1.716", 0x7800, 0x0800, CRC(f4190ca3) SHA1(ee234fb5c894fca5876ee6dc7ea8e89e7e0aec9c))
398ROM_END
399
400ROM_START(trizn_t1)
401   ROM_REGION(0x10000, "maincpu", 0)
402   ROM_LOAD("gamerom.716", 0x6000, 0x0800, CRC(757091c5) SHA1(00dac6c19b08d2528ea293619c4a39499a1a02c2))
403   ROM_LOAD("green1.716", 0x7000, 0x0800, CRC(2145f8ab) SHA1(ddf63208559a3a08d4e88327c55426b0eed27654))
404   ROM_LOAD("green2a.716", 0x7800, 0x0800, CRC(16621eec) SHA1(14e1cf5f7227860a3219b2b79fa66dcf252dce98))
405
406   ROM_REGION(0x10000, "audiocpu", 0)
407   ROM_LOAD("sound1.716", 0x7800, 0x0800, CRC(f4190ca3) SHA1(ee234fb5c894fca5876ee6dc7ea8e89e7e0aec9c))
408ROM_END
409
410512/*--------------------------------
411/ Time Warp - Sys.4 (Game #489)
412/-------------------------------*/
413ROM_START(tmwrp_l2)
414   ROM_REGION(0x10000, "maincpu", 0)
415   ROM_LOAD("gamerom.716", 0x6000, 0x0800, CRC(b168df09) SHA1(d4c97714636ce51be2e5f8cc5af89e10a2f82ac7))
416   ROM_LOAD("green1.716", 0x7000, 0x0800, CRC(2145f8ab) SHA1(ddf63208559a3a08d4e88327c55426b0eed27654))
417   ROM_LOAD("green2.716", 0x7800, 0x0800, CRC(1c978a4a) SHA1(1959184764643d58f1740c54bb74c2aad7d667d2))
418
419   ROM_REGION(0x10000, "audiocpu", 0)
420   ROM_LOAD("sound1.716", 0x7800, 0x0800, CRC(f4190ca3) SHA1(ee234fb5c894fca5876ee6dc7ea8e89e7e0aec9c))
421ROM_END
422
423ROM_START(tmwrp_t2)
424   ROM_REGION(0x10000, "maincpu", 0)
425   ROM_LOAD("gamerom.716", 0x6000, 0x0800, CRC(b168df09) SHA1(d4c97714636ce51be2e5f8cc5af89e10a2f82ac7))
426   ROM_LOAD("green1.716", 0x7000, 0x0800, CRC(2145f8ab) SHA1(ddf63208559a3a08d4e88327c55426b0eed27654))
427   ROM_LOAD("green2a.716", 0x7800, 0x0800, CRC(16621eec) SHA1(14e1cf5f7227860a3219b2b79fa66dcf252dce98))
428
429   ROM_REGION(0x10000, "audiocpu", 0)
430   ROM_LOAD("sound1.716", 0x7800, 0x0800, CRC(f4190ca3) SHA1(ee234fb5c894fca5876ee6dc7ea8e89e7e0aec9c))
431ROM_END
432
433/*--------------------------------
434513/ Laser Ball - Sys.6 (Game #493)
435514/-------------------------------*/
436515ROM_START(lzbal_l2)
r18808r18809
440519   ROM_LOAD("green2.716", 0x7800, 0x0800, CRC(1c978a4a) SHA1(1959184764643d58f1740c54bb74c2aad7d667d2))
441520
442521   ROM_REGION(0x10000, "audiocpu", 0)
443   ROM_LOAD("sound2.716", 0x7800, 0x0800, CRC(c9103a68) SHA1(cc77af54fdb192f0b334d9d1028210618c3f1d95))
522   ROM_LOAD("sound2.716", 0xf800, 0x0800, CRC(c9103a68) SHA1(cc77af54fdb192f0b334d9d1028210618c3f1d95))
444523ROM_END
445524
446525ROM_START(lzbal_t2)
r18808r18809
450529   ROM_LOAD("green2a.716", 0x7800, 0x0800, CRC(16621eec) SHA1(14e1cf5f7227860a3219b2b79fa66dcf252dce98))
451530
452531   ROM_REGION(0x10000, "audiocpu", 0)
453   ROM_LOAD("sound2.716", 0x7800, 0x0800, CRC(c9103a68) SHA1(cc77af54fdb192f0b334d9d1028210618c3f1d95))
532   ROM_LOAD("sound2.716", 0xf800, 0x0800, CRC(c9103a68) SHA1(cc77af54fdb192f0b334d9d1028210618c3f1d95))
454533ROM_END
455534
456/*-----------------------------
457/ Scorpion - Sys.6 (Game #494)
458/----------------------------*/
459ROM_START(scrpn_l1)
460   ROM_REGION(0x10000, "maincpu", 0)
461   ROM_LOAD("gamerom.716", 0x6000, 0x0800, CRC(881109a9) SHA1(53d4275c76b47b68a74209fe660d943a51e90eca))
462   ROM_LOAD("green1.716", 0x7000, 0x0800, CRC(2145f8ab) SHA1(ddf63208559a3a08d4e88327c55426b0eed27654))
463   ROM_LOAD("green2.716", 0x7800, 0x0800, CRC(1c978a4a) SHA1(1959184764643d58f1740c54bb74c2aad7d667d2))
464535
465   ROM_REGION(0x10000, "audiocpu", 0)
466   ROM_LOAD("sound1.716", 0x7800, 0x0800, CRC(f4190ca3) SHA1(ee234fb5c894fca5876ee6dc7ea8e89e7e0aec9c))
467ROM_END
468
469ROM_START(scrpn_t1)
470   ROM_REGION(0x10000, "maincpu", 0)
471   ROM_LOAD("gamerom.716", 0x6000, 0x0800, CRC(881109a9) SHA1(53d4275c76b47b68a74209fe660d943a51e90eca))
472   ROM_LOAD("green1.716", 0x7000, 0x0800, CRC(2145f8ab) SHA1(ddf63208559a3a08d4e88327c55426b0eed27654))
473   ROM_LOAD("green2a.716", 0x7800, 0x0800, CRC(16621eec) SHA1(14e1cf5f7227860a3219b2b79fa66dcf252dce98))
474
475   ROM_REGION(0x10000, "audiocpu", 0)
476   ROM_LOAD("sound1.716", 0x7800, 0x0800, CRC(f4190ca3) SHA1(ee234fb5c894fca5876ee6dc7ea8e89e7e0aec9c))
477ROM_END
478
479536/*----------------------------
480537/ Blackout - Sys.6 (Game #495)
481538/---------------------------*/
r18808r18809
486543   ROM_LOAD("green2.716", 0x7800, 0x0800, CRC(1c978a4a) SHA1(1959184764643d58f1740c54bb74c2aad7d667d2))
487544
488545   ROM_REGION(0x10000, "audiocpu", 0)
489   ROM_LOAD("v_ic7.532", 0x3000, 0x1000, CRC(87864071) SHA1(d03c71efc0431f30a07c8194c0614c96fb683710))
490   ROM_LOAD("v_ic5.532", 0x4000, 0x1000, CRC(046a96d8) SHA1(879127a88b3640bbb202c64cbf8678869c964177))
491   ROM_LOAD("v_ic6.532", 0x5000, 0x1000, CRC(0104e5c4) SHA1(c073cb4bdea189085ae074e9c16872752b6ffba0))
492   ROM_LOAD("sound2.716", 0x7800, 0x0800, CRC(c9103a68) SHA1(cc77af54fdb192f0b334d9d1028210618c3f1d95))
546   ROM_LOAD("v_ic7.532", 0xb000, 0x1000, CRC(87864071) SHA1(d03c71efc0431f30a07c8194c0614c96fb683710))
547   ROM_LOAD("v_ic5.532", 0xc000, 0x1000, CRC(046a96d8) SHA1(879127a88b3640bbb202c64cbf8678869c964177))
548   ROM_LOAD("v_ic6.532", 0xd000, 0x1000, CRC(0104e5c4) SHA1(c073cb4bdea189085ae074e9c16872752b6ffba0))
549   ROM_LOAD("sound2.716", 0xf800, 0x0800, CRC(c9103a68) SHA1(cc77af54fdb192f0b334d9d1028210618c3f1d95))
493550ROM_END
494551
495552ROM_START(blkou_t1)
r18808r18809
499556   ROM_LOAD("green2a.716", 0x7800, 0x0800, CRC(16621eec) SHA1(14e1cf5f7227860a3219b2b79fa66dcf252dce98))
500557
501558   ROM_REGION(0x10000, "audiocpu", 0)
502   ROM_LOAD("v_ic7.532", 0x3000, 0x1000, CRC(87864071) SHA1(d03c71efc0431f30a07c8194c0614c96fb683710))
503   ROM_LOAD("v_ic5.532", 0x4000, 0x1000, CRC(046a96d8) SHA1(879127a88b3640bbb202c64cbf8678869c964177))
504   ROM_LOAD("v_ic6.532", 0x5000, 0x1000, CRC(0104e5c4) SHA1(c073cb4bdea189085ae074e9c16872752b6ffba0))
505   ROM_LOAD("sound2.716", 0x7800, 0x0800, CRC(c9103a68) SHA1(cc77af54fdb192f0b334d9d1028210618c3f1d95))
559   ROM_LOAD("v_ic7.532", 0xb000, 0x1000, CRC(87864071) SHA1(d03c71efc0431f30a07c8194c0614c96fb683710))
560   ROM_LOAD("v_ic5.532", 0xc000, 0x1000, CRC(046a96d8) SHA1(879127a88b3640bbb202c64cbf8678869c964177))
561   ROM_LOAD("v_ic6.532", 0xd000, 0x1000, CRC(0104e5c4) SHA1(c073cb4bdea189085ae074e9c16872752b6ffba0))
562   ROM_LOAD("sound2.716", 0xf800, 0x0800, CRC(c9103a68) SHA1(cc77af54fdb192f0b334d9d1028210618c3f1d95))
506563ROM_END
507564
508565ROM_START(blkou_f1)
r18808r18809
512569   ROM_LOAD("green2.716", 0x7800, 0x0800, CRC(1c978a4a) SHA1(1959184764643d58f1740c54bb74c2aad7d667d2))
513570
514571   ROM_REGION(0x10000, "audiocpu", 0)
515   ROM_LOAD("speech7f.532", 0x3000, 0x1000, CRC(bdc1b0b1) SHA1(c78f8653dfe3ec58722a8a17da7924e4a76cf692))
516   ROM_LOAD("speech6f.532", 0x4000, 0x1000, CRC(9b7e4ae9) SHA1(137b5ec871162329cb7ca3a62da3193382223d8a))
517   ROM_LOAD("speech5f.532", 0x5000, 0x1000, CRC(9040f34a) SHA1(529eae0b58f3300f2b9bdf40c5ca7f4b29425dff))
518   ROM_LOAD("speech4f.532", 0x6000, 0x1000, CRC(29c4abde) SHA1(b3af7b8d0c2548f5c0bb240aa1dc5cc59bb2af9a))
519   ROM_LOAD("sound2.716", 0x7800, 0x0800, CRC(c9103a68) SHA1(cc77af54fdb192f0b334d9d1028210618c3f1d95))
572   ROM_LOAD("speech7f.532", 0xb000, 0x1000, CRC(bdc1b0b1) SHA1(c78f8653dfe3ec58722a8a17da7924e4a76cf692))
573   ROM_LOAD("speech6f.532", 0xc000, 0x1000, CRC(9b7e4ae9) SHA1(137b5ec871162329cb7ca3a62da3193382223d8a))
574   ROM_LOAD("speech5f.532", 0xd000, 0x1000, CRC(9040f34a) SHA1(529eae0b58f3300f2b9bdf40c5ca7f4b29425dff))
575   ROM_LOAD("speech4f.532", 0xe000, 0x1000, CRC(29c4abde) SHA1(b3af7b8d0c2548f5c0bb240aa1dc5cc59bb2af9a))
576   ROM_LOAD("sound2.716", 0xf800, 0x0800, CRC(c9103a68) SHA1(cc77af54fdb192f0b334d9d1028210618c3f1d95))
520577ROM_END
521578
522579/*--------------------------
r18808r18809
529586   ROM_LOAD("green2.716", 0x7800, 0x0800, CRC(1c978a4a) SHA1(1959184764643d58f1740c54bb74c2aad7d667d2))
530587
531588   ROM_REGION(0x10000, "audiocpu", 0)
532   ROM_LOAD("v_ic7.532", 0x3000, 0x1000, CRC(0b1879e3) SHA1(2c34a815f598b4413e9229e8eb1322ec9e7cc9d6))
533   ROM_LOAD("v_ic5.532", 0x4000, 0x1000, CRC(0ceaef37) SHA1(33b5f5286b8588162d56dbc5c9a8ccb70d3b9090))
534   ROM_LOAD("v_ic6.532", 0x5000, 0x1000, CRC(218290b9) SHA1(6afeff1413895489e92a4bb1c05f6de5773dbb6a))
535   ROM_LOAD("sound2.716", 0x7800, 0x0800, CRC(c9103a68) SHA1(cc77af54fdb192f0b334d9d1028210618c3f1d95))
589   ROM_LOAD("v_ic7.532", 0xb000, 0x1000, CRC(0b1879e3) SHA1(2c34a815f598b4413e9229e8eb1322ec9e7cc9d6))
590   ROM_LOAD("v_ic5.532", 0xc000, 0x1000, CRC(0ceaef37) SHA1(33b5f5286b8588162d56dbc5c9a8ccb70d3b9090))
591   ROM_LOAD("v_ic6.532", 0xd000, 0x1000, CRC(218290b9) SHA1(6afeff1413895489e92a4bb1c05f6de5773dbb6a))
592   ROM_LOAD("sound2.716", 0xf800, 0x0800, CRC(c9103a68) SHA1(cc77af54fdb192f0b334d9d1028210618c3f1d95))
536593ROM_END
537594
538595ROM_START(grgar_t1)
r18808r18809
542599   ROM_LOAD("green2a.716", 0x7800, 0x0800, CRC(16621eec) SHA1(14e1cf5f7227860a3219b2b79fa66dcf252dce98))
543600
544601   ROM_REGION(0x10000, "audiocpu", 0)
545   ROM_LOAD("v_ic7.532", 0x3000, 0x1000, CRC(0b1879e3) SHA1(2c34a815f598b4413e9229e8eb1322ec9e7cc9d6))
546   ROM_LOAD("v_ic5.532", 0x4000, 0x1000, CRC(0ceaef37) SHA1(33b5f5286b8588162d56dbc5c9a8ccb70d3b9090))
547   ROM_LOAD("v_ic6.532", 0x5000, 0x1000, CRC(218290b9) SHA1(6afeff1413895489e92a4bb1c05f6de5773dbb6a))
548   ROM_LOAD("sound2.716", 0x7800, 0x0800, CRC(c9103a68) SHA1(cc77af54fdb192f0b334d9d1028210618c3f1d95))
602   ROM_LOAD("v_ic7.532", 0xb000, 0x1000, CRC(0b1879e3) SHA1(2c34a815f598b4413e9229e8eb1322ec9e7cc9d6))
603   ROM_LOAD("v_ic5.532", 0xc000, 0x1000, CRC(0ceaef37) SHA1(33b5f5286b8588162d56dbc5c9a8ccb70d3b9090))
604   ROM_LOAD("v_ic6.532", 0xd000, 0x1000, CRC(218290b9) SHA1(6afeff1413895489e92a4bb1c05f6de5773dbb6a))
605   ROM_LOAD("sound2.716", 0xf800, 0x0800, CRC(c9103a68) SHA1(cc77af54fdb192f0b334d9d1028210618c3f1d95))
549606ROM_END
550607
551608/*-------------------------------
r18808r18809
561618   ROM_LOAD("prom1_6.474", 0x6000, 0x0200, CRC(af6eb0b9) SHA1(28f8366737e09ffd60cb5ea55a5734143cdb9663))
562619
563620   ROM_REGION(0x10000, "audiocpu", 0)
564   ROM_LOAD("v_ic7.532", 0x3000, 0x1000, CRC(94c5c0a7) SHA1(ff7c618d1666c1d5c3319fdd72c1af2846659290))
565   ROM_LOAD("v_ic5.532", 0x4000, 0x1000, CRC(1737fdd2) SHA1(6307e0ae715e97294ee8aaaeb2e2bebb0cb590c2))
566   ROM_LOAD("v_ic6.532", 0x5000, 0x1000, CRC(e56f7aa2) SHA1(cb922c3f4d91285dda4ccae880c2d798a82fd51b))
567   ROM_LOAD("sound3.716", 0x7800, 0x0800, CRC(55a10d13) SHA1(521d4cdfb0ed8178b3594cedceae93b772a951a4))
621   ROM_LOAD("v_ic7.532", 0xb000, 0x1000, CRC(94c5c0a7) SHA1(ff7c618d1666c1d5c3319fdd72c1af2846659290))
622   ROM_LOAD("v_ic5.532", 0xc000, 0x1000, CRC(1737fdd2) SHA1(6307e0ae715e97294ee8aaaeb2e2bebb0cb590c2))
623   ROM_LOAD("v_ic6.532", 0xd000, 0x1000, CRC(e56f7aa2) SHA1(cb922c3f4d91285dda4ccae880c2d798a82fd51b))
624   ROM_LOAD("sound3.716", 0xf800, 0x0800, CRC(55a10d13) SHA1(521d4cdfb0ed8178b3594cedceae93b772a951a4))
568625ROM_END
569626
570627ROM_START(frpwr_t6)
r18808r18809
577634   ROM_LOAD("green2a.716", 0x7800, 0x0800, CRC(16621eec) SHA1(14e1cf5f7227860a3219b2b79fa66dcf252dce98))
578635
579636   ROM_REGION(0x10000, "audiocpu", 0)
580   ROM_LOAD("v_ic7.532", 0x3000, 0x1000, CRC(94c5c0a7) SHA1(ff7c618d1666c1d5c3319fdd72c1af2846659290))
581   ROM_LOAD("v_ic5.532", 0x4000, 0x1000, CRC(1737fdd2) SHA1(6307e0ae715e97294ee8aaaeb2e2bebb0cb590c2))
582   ROM_LOAD("v_ic6.532", 0x5000, 0x1000, CRC(e56f7aa2) SHA1(cb922c3f4d91285dda4ccae880c2d798a82fd51b))
583   ROM_LOAD("sound3.716", 0x7800, 0x0800, CRC(55a10d13) SHA1(521d4cdfb0ed8178b3594cedceae93b772a951a4))
637   ROM_LOAD("v_ic7.532", 0xb000, 0x1000, CRC(94c5c0a7) SHA1(ff7c618d1666c1d5c3319fdd72c1af2846659290))
638   ROM_LOAD("v_ic5.532", 0xc000, 0x1000, CRC(1737fdd2) SHA1(6307e0ae715e97294ee8aaaeb2e2bebb0cb590c2))
639   ROM_LOAD("v_ic6.532", 0xd000, 0x1000, CRC(e56f7aa2) SHA1(cb922c3f4d91285dda4ccae880c2d798a82fd51b))
640   ROM_LOAD("sound3.716", 0xf800, 0x0800, CRC(55a10d13) SHA1(521d4cdfb0ed8178b3594cedceae93b772a951a4))
584641ROM_END
585642
586643ROM_START(frpwr_l2)
r18808r18809
593650   ROM_LOAD("green2.716", 0x7800, 0x0800, CRC(1c978a4a) SHA1(1959184764643d58f1740c54bb74c2aad7d667d2))
594651
595652   ROM_REGION(0x10000, "audiocpu", 0)
596   ROM_LOAD("v_ic7.532", 0x3000, 0x1000, CRC(94c5c0a7) SHA1(ff7c618d1666c1d5c3319fdd72c1af2846659290))
597   ROM_LOAD("v_ic5.532", 0x4000, 0x1000, CRC(1737fdd2) SHA1(6307e0ae715e97294ee8aaaeb2e2bebb0cb590c2))
598   ROM_LOAD("v_ic6.532", 0x5000, 0x1000, CRC(e56f7aa2) SHA1(cb922c3f4d91285dda4ccae880c2d798a82fd51b))
599   ROM_LOAD("sound3.716", 0x7800, 0x0800, CRC(55a10d13) SHA1(521d4cdfb0ed8178b3594cedceae93b772a951a4))
653   ROM_LOAD("v_ic7.532", 0xb000, 0x1000, CRC(94c5c0a7) SHA1(ff7c618d1666c1d5c3319fdd72c1af2846659290))
654   ROM_LOAD("v_ic5.532", 0xc000, 0x1000, CRC(1737fdd2) SHA1(6307e0ae715e97294ee8aaaeb2e2bebb0cb590c2))
655   ROM_LOAD("v_ic6.532", 0xd000, 0x1000, CRC(e56f7aa2) SHA1(cb922c3f4d91285dda4ccae880c2d798a82fd51b))
656   ROM_LOAD("sound3.716", 0xf800, 0x0800, CRC(55a10d13) SHA1(521d4cdfb0ed8178b3594cedceae93b772a951a4))
600657ROM_END
601658
602659
603GAME( 1978, trizn_l1, 0,        s6, s6, driver_device, 0,ROT0, "Williams", "Tri Zone (L-1)", GAME_IS_SKELETON_MECHANICAL)
604GAME( 1978, trizn_t1, trizn_l1, s6, s6, driver_device, 0,ROT0, "Williams", "Tri Zone (T-1)", GAME_IS_SKELETON_MECHANICAL)
605GAME( 1979, tmwrp_l2, 0,        s6, s6, driver_device, 0,ROT0, "Williams", "Time Warp (L-2)", GAME_IS_SKELETON_MECHANICAL)
606GAME( 1979, tmwrp_t2, tmwrp_l2, s6, s6, driver_device, 0,ROT0, "Williams", "Time Warp (T-2)", GAME_IS_SKELETON_MECHANICAL)
607GAME( 1979, lzbal_l2, 0,        s6, s6, driver_device, 0,ROT0, "Williams", "Laser Ball (L-2)", GAME_IS_SKELETON_MECHANICAL)
608GAME( 1980, lzbal_t2, lzbal_l2, s6, s6, driver_device, 0,ROT0, "Williams", "Laser Ball (T-2)", GAME_IS_SKELETON_MECHANICAL)
609GAME( 1980, scrpn_l1, 0,        s6, s6, driver_device, 0,ROT0, "Williams", "Scorpion (L-1)", GAME_IS_SKELETON_MECHANICAL)
610GAME( 1980, scrpn_t1, scrpn_l1, s6, s6, driver_device, 0,ROT0, "Williams", "Scorpion (T-1)", GAME_IS_SKELETON_MECHANICAL)
611GAME( 1979, blkou_l1, 0,        s6, s6, driver_device, 0,ROT0, "Williams", "Blackout (L-1)", GAME_IS_SKELETON_MECHANICAL)
612GAME( 1979, blkou_t1, blkou_l1, s6, s6, driver_device, 0,ROT0, "Williams", "Blackout (T-1)", GAME_IS_SKELETON_MECHANICAL)
613GAME( 1979, blkou_f1, blkou_l1, s6, s6, driver_device, 0,ROT0, "Williams", "Blackout (L-1, French Speech)", GAME_IS_SKELETON_MECHANICAL)
614GAME( 1979, grgar_l1, 0,        s6, s6, driver_device, 0,ROT0, "Williams", "Gorgar (L-1)", GAME_IS_SKELETON_MECHANICAL)
615GAME( 1979, grgar_t1, grgar_l1, s6, s6, driver_device, 0,ROT0, "Williams", "Gorgar (T-1)", GAME_IS_SKELETON_MECHANICAL)
616GAME( 1980, frpwr_l6, 0,        s6, s6, driver_device, 0,ROT0, "Williams", "Firepower (L-6)", GAME_IS_SKELETON_MECHANICAL)
617GAME( 1980, frpwr_t6, frpwr_l6, s6, s6, driver_device, 0,ROT0, "Williams", "Firepower (T-6)", GAME_IS_SKELETON_MECHANICAL)
618GAME( 1980, frpwr_l2, frpwr_l6, s6, s6, driver_device, 0,ROT0, "Williams", "Firepower (L-2)", GAME_IS_SKELETON_MECHANICAL)
660GAME( 1979, lzbal_l2, 0,        s6, s6, driver_device, 0, ROT0, "Williams", "Laser Ball (L-2)", GAME_MECHANICAL | GAME_NO_SOUND)
661GAME( 1980, lzbal_t2, lzbal_l2, s6, s6, driver_device, 0, ROT0, "Williams", "Laser Ball (T-2)", GAME_MECHANICAL | GAME_NO_SOUND)
662GAME( 1979, blkou_l1, 0,        s6, s6, driver_device, 0, ROT0, "Williams", "Blackout (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
663GAME( 1979, blkou_t1, blkou_l1, s6, s6, driver_device, 0, ROT0, "Williams", "Blackout (T-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
664GAME( 1979, blkou_f1, blkou_l1, s6, s6, driver_device, 0, ROT0, "Williams", "Blackout (L-1, French Speech)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
665GAME( 1979, grgar_l1, 0,        s6, s6, driver_device, 0, ROT0, "Williams", "Gorgar (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
666GAME( 1979, grgar_t1, grgar_l1, s6, s6, driver_device, 0, ROT0, "Williams", "Gorgar (T-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
667GAME( 1980, frpwr_l6, 0,        s6, s6, driver_device, 0, ROT0, "Williams", "Firepower (L-6)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
668GAME( 1980, frpwr_t6, frpwr_l6, s6, s6, driver_device, 0, ROT0, "Williams", "Firepower (T-6)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
669GAME( 1980, frpwr_l2, frpwr_l6, s6, s6, driver_device, 0, ROT0, "Williams", "Firepower (L-2)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
trunk/src/mame/drivers/s8.c
r18808r18809
5555   m_maincpu(*this, "maincpu"),
5656   m_audiocpu(*this, "audiocpu"),
5757   m_dac(*this, "dac"),
58   m_pia(*this, "pia"),
58   m_pias(*this, "pias"),
5959   m_pia21(*this, "pia21"),
6060   m_pia24(*this, "pia24"),
6161   m_pia28(*this, "pia28"),
r18808r18809
7474   DECLARE_READ8_MEMBER(dips_r);
7575   DECLARE_READ8_MEMBER(switch_r);
7676   DECLARE_WRITE8_MEMBER(switch_w);
77   DECLARE_READ_LINE_MEMBER(pia_ca1_r);
77   DECLARE_READ_LINE_MEMBER(pias_ca1_r);
7878   DECLARE_READ_LINE_MEMBER(pia21_ca1_r);
7979   DECLARE_READ_LINE_MEMBER(pia28_ca1_r);
8080   DECLARE_READ_LINE_MEMBER(pia28_cb1_r);
81   DECLARE_WRITE_LINE_MEMBER(pia_ca2_w);
82   DECLARE_WRITE_LINE_MEMBER(pia_cb2_w);
81   DECLARE_WRITE_LINE_MEMBER(pias_ca2_w);
82   DECLARE_WRITE_LINE_MEMBER(pias_cb2_w);
8383   DECLARE_WRITE_LINE_MEMBER(pia21_ca2_w);
8484   DECLARE_WRITE_LINE_MEMBER(pia21_cb2_w) { }; // enable solenoids
8585   DECLARE_WRITE_LINE_MEMBER(pia24_cb2_w) { }; // dummy to stop error log filling up
r18808r18809
9393
9494   // devices
9595   required_device<cpu_device> m_maincpu;
96   optional_device<cpu_device> m_audiocpu;
97   optional_device<dac_device> m_dac;
98   optional_device<pia6821_device> m_pia;
96   required_device<cpu_device> m_audiocpu;
97   required_device<dac_device> m_dac;
98   required_device<pia6821_device> m_pias;
9999   required_device<pia6821_device> m_pia21;
100100   required_device<pia6821_device> m_pia24;
101101   required_device<pia6821_device> m_pia28;
r18808r18809
122122
123123static ADDRESS_MAP_START( s8_audio_map, AS_PROGRAM, 8, s8_state )
124124   AM_RANGE(0x0000, 0x00ff) AM_RAM
125   AM_RANGE(0x2000, 0x2003) AM_DEVREADWRITE("pia", pia6821_device, read, write) // stillcra sounds
126   AM_RANGE(0x4000, 0x4003) AM_DEVREADWRITE("pia", pia6821_device, read, write) // pfevr sounds
125   AM_RANGE(0x2000, 0x2003) AM_DEVREADWRITE("pias", pia6821_device, read, write) // stillcra sounds
126   AM_RANGE(0x4000, 0x4003) AM_DEVREADWRITE("pias", pia6821_device, read, write) // pfevr sounds
127127   AM_RANGE(0x8000, 0xffff) AM_ROM
128128ADDRESS_MAP_END
129129
r18808r18809
244244{
245245// sound ns
246246   m_ca1 = state;
247   m_pia->ca1_w(m_ca1);
247   m_pias->ca1_w(m_ca1);
248248}
249249
250250static const pia6821_interface pia21_intf =
r18808r18809
358358   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE)      /* IRQB */
359359};
360360
361READ_LINE_MEMBER( s8_state::pia_ca1_r )
361READ_LINE_MEMBER( s8_state::pias_ca1_r )
362362{
363363   return m_ca1;
364364}
365365
366WRITE_LINE_MEMBER( s8_state::pia_ca2_w )
366WRITE_LINE_MEMBER( s8_state::pias_ca2_w )
367367{
368368// speech clock
369369}
370370
371WRITE_LINE_MEMBER( s8_state::pia_cb2_w )
371WRITE_LINE_MEMBER( s8_state::pias_cb2_w )
372372{
373373// speech data
374374}
r18808r18809
383383   m_dac->write_unsigned8(data);
384384}
385385
386static const pia6821_interface pia_intf =
386static const pia6821_interface pias_intf =
387387{
388388   DEVCB_DRIVER_MEMBER(s8_state, dac_r),      /* port A in */
389389   DEVCB_NULL,      /* port B in */
390   DEVCB_DRIVER_LINE_MEMBER(s8_state, pia_ca1_r),      /* line CA1 in */
390   DEVCB_DRIVER_LINE_MEMBER(s8_state, pias_ca1_r),      /* line CA1 in */
391391   DEVCB_LINE_GND,      /* line CB1 in */
392392   DEVCB_NULL,      /* line CA2 in */
393393   DEVCB_NULL,      /* line CB2 in */
394394   DEVCB_DRIVER_MEMBER(s8_state, sound_w),      /* port A out */
395395   DEVCB_DRIVER_MEMBER(s8_state, dac_w),      /* port B out */
396   DEVCB_DRIVER_LINE_MEMBER(s8_state, pia_ca2_w),      /* line CA2 out */
397   DEVCB_DRIVER_LINE_MEMBER(s8_state, pia_cb2_w),      /* line CB2 out */
396   DEVCB_DRIVER_LINE_MEMBER(s8_state, pias_ca2_w),      /* line CA2 out */
397   DEVCB_DRIVER_LINE_MEMBER(s8_state, pias_cb2_w),      /* line CB2 out */
398398   DEVCB_CPU_INPUT_LINE("audiocpu", M6800_IRQ_LINE),      /* IRQA */
399399   DEVCB_CPU_INPUT_LINE("audiocpu", M6800_IRQ_LINE)      /* IRQB */
400400};
r18808r18809
432432   MCFG_SPEAKER_STANDARD_MONO("mono")
433433   MCFG_SOUND_ADD("dac", DAC, 0)
434434   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
435   MCFG_PIA6821_ADD("pia", pia_intf)
435   MCFG_PIA6821_ADD("pias", pias_intf)
436436MACHINE_CONFIG_END
437437
438438/*------------------------------
trunk/src/mame/drivers/s6a.c
r18808r18809
3232   m_audiocpu(*this, "audiocpu"),
3333   m_dac(*this, "dac"),
3434   m_hc55516(*this, "hc55516"),
35   m_pia(*this, "pia"),
35   m_pias(*this, "pias"),
3636   m_pia22(*this, "pia22"),
3737   m_pia24(*this, "pia24"),
3838   m_pia28(*this, "pia28"),
r18808r18809
5252   DECLARE_WRITE8_MEMBER(switch_w);
5353   DECLARE_READ_LINE_MEMBER(pia28_ca1_r);
5454   DECLARE_READ_LINE_MEMBER(pia28_cb1_r);
55   DECLARE_READ_LINE_MEMBER(pia_cb1_r);
56   DECLARE_WRITE_LINE_MEMBER(pia_ca2_w);
57   DECLARE_WRITE_LINE_MEMBER(pia_cb2_w);
55   DECLARE_READ_LINE_MEMBER(pias_cb1_r);
56   DECLARE_WRITE_LINE_MEMBER(pias_ca2_w);
57   DECLARE_WRITE_LINE_MEMBER(pias_cb2_w);
5858   DECLARE_WRITE_LINE_MEMBER(pia22_ca2_w) { }; //ST5
5959   DECLARE_WRITE_LINE_MEMBER(pia22_cb2_w) { }; //ST-solenoids enable
6060   DECLARE_WRITE_LINE_MEMBER(pia24_ca2_w) { }; //ST2
r18808r18809
7474   required_device<cpu_device> m_audiocpu;
7575   required_device<dac_device> m_dac;
7676   required_device<hc55516_device> m_hc55516;
77   required_device<pia6821_device> m_pia;
77   required_device<pia6821_device> m_pias;
7878   required_device<pia6821_device> m_pia22;
7979   required_device<pia6821_device> m_pia24;
8080   required_device<pia6821_device> m_pia28;
r18808r18809
101101
102102static ADDRESS_MAP_START( s6a_audio_map, AS_PROGRAM, 8, s6a_state )
103103   AM_RANGE(0x0000, 0x00ff) AM_RAM
104   AM_RANGE(0x0400, 0x0403) AM_MIRROR(0x8000) AM_DEVREADWRITE("pia", pia6821_device, read, write) // sounds
104   AM_RANGE(0x0400, 0x0403) AM_MIRROR(0x8000) AM_DEVREADWRITE("pias", pia6821_device, read, write)
105105   AM_RANGE(0xA000, 0xffff) AM_ROM
106106ADDRESS_MAP_END
107107
r18808r18809
283283   if (BIT(data, 4))
284284      m_sound_data &= 0x7f;
285285
286   m_cb1 = ((m_sound_data & 0x7f) != 0x7f);
286   m_cb1 = ((m_sound_data & 0x9f) != 0x9f);
287287
288   m_pia->cb1_w(m_cb1);
288   m_pias->cb1_w(m_cb1);
289289
290290//   if (BIT(data, 5))
291291//      m_samples->start(0, 6); // knocker
r18808r18809
428428   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE)      /* IRQB */
429429};
430430
431READ_LINE_MEMBER( s6a_state::pia_cb1_r )
431READ_LINE_MEMBER( s6a_state::pias_cb1_r )
432432{
433433   return m_cb1;
434434}
435435
436WRITE_LINE_MEMBER( s6a_state::pia_cb2_w )
436WRITE_LINE_MEMBER( s6a_state::pias_cb2_w )
437437{
438438// speech clock
439439   hc55516_clock_w(m_hc55516, state);
440440}
441441
442WRITE_LINE_MEMBER( s6a_state::pia_ca2_w )
442WRITE_LINE_MEMBER( s6a_state::pias_ca2_w )
443443{
444444// speech data
445445   hc55516_digit_w(m_hc55516, state);
r18808r18809
455455   m_dac->write_unsigned8(data);
456456}
457457
458static const pia6821_interface pia_intf =
458static const pia6821_interface pias_intf =
459459{
460460   DEVCB_NULL,      /* port A in */
461461   DEVCB_DRIVER_MEMBER(s6a_state, dac_r),      /* port B in */
462462   DEVCB_NULL,      /* line CA1 in */
463   DEVCB_DRIVER_LINE_MEMBER(s6a_state, pia_cb1_r),      /* line CB1 in */
463   DEVCB_DRIVER_LINE_MEMBER(s6a_state, pias_cb1_r),      /* line CB1 in */
464464   DEVCB_NULL,      /* line CA2 in */
465465   DEVCB_NULL,      /* line CB2 in */
466466   DEVCB_DRIVER_MEMBER(s6a_state, dac_w),      /* port A out */
467467   DEVCB_NULL,      /* port B out */
468   DEVCB_DRIVER_LINE_MEMBER(s6a_state, pia_ca2_w),      /* line CA2 out */
469   DEVCB_DRIVER_LINE_MEMBER(s6a_state, pia_cb2_w),      /* line CB2 out */
468   DEVCB_DRIVER_LINE_MEMBER(s6a_state, pias_ca2_w),      /* line CA2 out */
469   DEVCB_DRIVER_LINE_MEMBER(s6a_state, pias_cb2_w),      /* line CB2 out */
470470   DEVCB_CPU_INPUT_LINE("audiocpu", M6800_IRQ_LINE),      /* IRQA */
471471   DEVCB_CPU_INPUT_LINE("audiocpu", M6800_IRQ_LINE)      /* IRQB */
472472};
r18808r18809
503503   MCFG_CPU_PROGRAM_MAP(s6a_audio_map)
504504   MCFG_SPEAKER_STANDARD_MONO("mono")
505505   MCFG_SOUND_ADD("dac", DAC, 0)
506   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
506   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
507507   MCFG_SPEAKER_STANDARD_MONO("speech")
508508   MCFG_SOUND_ADD("hc55516", HC55516, 0)
509509   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speech", 0.50)
510   MCFG_PIA6821_ADD("pia", pia_intf)
510   MCFG_PIA6821_ADD("pias", pias_intf)
511511MACHINE_CONFIG_END
512512
513513
r18808r18809
568568ROM_END
569569
570570
571GAME(1980,algar_l1, 0,       s6a, s6a, driver_device, 0, ROT0, "Williams", "Algar (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING)
572GAME(1980,alpok_l6, 0,       s6a, s6a, driver_device, 0, ROT0, "Williams", "Alien Poker (L-6)", GAME_MECHANICAL | GAME_NOT_WORKING)
573GAME(1980,alpok_l2, alpok_l6,s6a, s6a, driver_device, 0, ROT0, "Williams", "Alien Poker (L-2)", GAME_MECHANICAL | GAME_NOT_WORKING)
574GAME(1980,alpok_f6, alpok_l6,s6a, s6a, driver_device, 0, ROT0, "Williams", "Alien Poker (L-6 French speech)", GAME_MECHANICAL | GAME_NOT_WORKING)
571GAME(1980,algar_l1, 0,       s6a, s6a, driver_device, 0, ROT0, "Williams", "Algar (L-1)", GAME_MECHANICAL | GAME_NO_SOUND)
572GAME(1980,alpok_l6, 0,       s6a, s6a, driver_device, 0, ROT0, "Williams", "Alien Poker (L-6)", GAME_MECHANICAL | GAME_NO_SOUND)
573GAME(1980,alpok_l2, alpok_l6,s6a, s6a, driver_device, 0, ROT0, "Williams", "Alien Poker (L-2)", GAME_MECHANICAL | GAME_NO_SOUND)
574GAME(1980,alpok_f6, alpok_l6,s6a, s6a, driver_device, 0, ROT0, "Williams", "Alien Poker (L-6 French speech)", GAME_MECHANICAL | GAME_NO_SOUND)
trunk/src/mame/drivers/s3.c
r18808r18809
3737   m_maincpu(*this, "maincpu"),
3838   m_audiocpu(*this, "audiocpu"),
3939   m_dac(*this, "dac"),
40   m_pia0(*this, "pia0"),
41   m_pia1(*this, "pia1"),
42   m_pia2(*this, "pia2"),
43   m_pia3(*this, "pia3"),
44   m_pia4(*this, "pia4")
40   m_pia22(*this, "pia22"),
41   m_pia24(*this, "pia24"),
42   m_pia28(*this, "pia28"),
43   m_pia30(*this, "pia30"),
44   m_pias(*this, "pias")
4545   { }
4646
4747   DECLARE_READ8_MEMBER(dac_r);
r18808r18809
5555   DECLARE_READ8_MEMBER(dips_r);
5656   DECLARE_READ8_MEMBER(switch_r);
5757   DECLARE_WRITE8_MEMBER(switch_w);
58   DECLARE_READ_LINE_MEMBER(pia2_ca1_r);
59   DECLARE_READ_LINE_MEMBER(pia2_cb1_r);
60   DECLARE_READ_LINE_MEMBER(pia4_cb1_r);
61   DECLARE_WRITE_LINE_MEMBER(pia0_ca2_w) { }; //ST5
62   DECLARE_WRITE_LINE_MEMBER(pia0_cb2_w) { }; //ST-solenoids enable
63   DECLARE_WRITE_LINE_MEMBER(pia1_ca2_w) { }; //ST2
64   DECLARE_WRITE_LINE_MEMBER(pia1_cb2_w) { }; //ST1
65   DECLARE_WRITE_LINE_MEMBER(pia2_ca2_w) { }; //diag leds enable
66   DECLARE_WRITE_LINE_MEMBER(pia2_cb2_w) { }; //ST6
67   DECLARE_WRITE_LINE_MEMBER(pia3_ca2_w) { }; //ST4
68   DECLARE_WRITE_LINE_MEMBER(pia3_cb2_w) { }; //ST3
58   DECLARE_READ_LINE_MEMBER(pia28_ca1_r);
59   DECLARE_READ_LINE_MEMBER(pia28_cb1_r);
60   DECLARE_READ_LINE_MEMBER(pias_cb1_r);
61   DECLARE_WRITE_LINE_MEMBER(pia22_ca2_w) { }; //ST5
62   DECLARE_WRITE_LINE_MEMBER(pia22_cb2_w) { }; //ST-solenoids enable
63   DECLARE_WRITE_LINE_MEMBER(pia24_ca2_w) { }; //ST2
64   DECLARE_WRITE_LINE_MEMBER(pia24_cb2_w) { }; //ST1
65   DECLARE_WRITE_LINE_MEMBER(pia28_ca2_w) { }; //diag leds enable
66   DECLARE_WRITE_LINE_MEMBER(pia28_cb2_w) { }; //ST6
67   DECLARE_WRITE_LINE_MEMBER(pia30_ca2_w) { }; //ST4
68   DECLARE_WRITE_LINE_MEMBER(pia30_cb2_w) { }; //ST3
6969   TIMER_DEVICE_CALLBACK_MEMBER(irq);
7070   DECLARE_INPUT_CHANGED_MEMBER(main_nmi);
7171   DECLARE_INPUT_CHANGED_MEMBER(audio_nmi);
r18808r18809
7777   required_device<cpu_device> m_maincpu;
7878   optional_device<cpu_device> m_audiocpu;
7979   optional_device<dac_device> m_dac;
80   required_device<pia6821_device> m_pia0;
81   required_device<pia6821_device> m_pia1;
82   required_device<pia6821_device> m_pia2;
83   required_device<pia6821_device> m_pia3;
84   optional_device<pia6821_device> m_pia4;
80   required_device<pia6821_device> m_pia22;
81   required_device<pia6821_device> m_pia24;
82   required_device<pia6821_device> m_pia28;
83   required_device<pia6821_device> m_pia30;
84   optional_device<pia6821_device> m_pias;
8585private:
8686   UINT8 m_t_c;
8787   UINT8 m_sound_data;
r18808r18809
9696   ADDRESS_MAP_GLOBAL_MASK(0x7fff)
9797   AM_RANGE(0x0000, 0x00ff) AM_RAM
9898   AM_RANGE(0x0100, 0x01ff) AM_RAM AM_SHARE("nvram")
99   AM_RANGE(0x2200, 0x2203) AM_DEVREADWRITE("pia0", pia6821_device, read, write) // solenoids
100   AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia1", pia6821_device, read, write) // lamps
101   AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia2", pia6821_device, read, write) // display
102   AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia3", pia6821_device, read, write) // inputs
99   AM_RANGE(0x2200, 0x2203) AM_DEVREADWRITE("pia22", pia6821_device, read, write) // solenoids
100   AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps
101   AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display
102   AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs
103103   AM_RANGE(0x6000, 0x7fff) AM_ROM
104104ADDRESS_MAP_END
105105
106106static ADDRESS_MAP_START( s3_audio_map, AS_PROGRAM, 8, s3_state )
107107   ADDRESS_MAP_GLOBAL_MASK(0xfff)
108108   AM_RANGE(0x0000, 0x007f) AM_RAM
109   AM_RANGE(0x0400, 0x0403) AM_DEVREADWRITE("pia4", pia6821_device, read, write) // sounds
109   AM_RANGE(0x0400, 0x0403) AM_DEVREADWRITE("pias", pia6821_device, read, write) // sounds
110110   AM_RANGE(0x0800, 0x0fff) AM_ROM
111111ADDRESS_MAP_END
112112
r18808r18809
312312         m_sound_data &= 0x7f;
313313
314314
315      m_cb1 = ((m_sound_data & 0x7f) != 0x7f);
315      m_cb1 = ((m_sound_data & 0x9f) != 0x9f);
316316
317      m_pia4->cb1_w(!m_cb1);
317      m_pias->cb1_w(m_cb1);
318318   }
319319
320320   if (BIT(data, 5))
321321      m_samples->start(0, 6); // knocker
322322}
323323
324static const pia6821_interface pia0_intf =
324static const pia6821_interface pia22_intf =
325325{
326326   DEVCB_NULL,      /* port A in */
327327   DEVCB_NULL,      /* port B in */
r18808r18809
331331   DEVCB_NULL,      /* line CB2 in */
332332   DEVCB_DRIVER_MEMBER(s3_state, sol0_w),      /* port A out */
333333   DEVCB_DRIVER_MEMBER(s3_state, sol1_w),      /* port B out */
334   DEVCB_DRIVER_LINE_MEMBER(s3_state, pia0_ca2_w),      /* line CA2 out */
335   DEVCB_DRIVER_LINE_MEMBER(s3_state, pia0_cb2_w),      /* line CB2 out */
334   DEVCB_DRIVER_LINE_MEMBER(s3_state, pia22_ca2_w),      /* line CA2 out */
335   DEVCB_DRIVER_LINE_MEMBER(s3_state, pia22_cb2_w),      /* line CB2 out */
336336   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE),      /* IRQA */
337337   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE)      /* IRQB */
338338};
r18808r18809
346346{
347347}
348348
349static const pia6821_interface pia1_intf =
349static const pia6821_interface pia24_intf =
350350{
351351   DEVCB_NULL,      /* port A in */
352352   DEVCB_NULL,      /* port B in */
r18808r18809
356356   DEVCB_NULL,      /* line CB2 in */
357357   DEVCB_DRIVER_MEMBER(s3_state, lamp0_w),      /* port A out */
358358   DEVCB_DRIVER_MEMBER(s3_state, lamp1_w),      /* port B out */
359   DEVCB_DRIVER_LINE_MEMBER(s3_state, pia1_ca2_w),      /* line CA2 out */
360   DEVCB_DRIVER_LINE_MEMBER(s3_state, pia1_cb2_w),      /* line CB2 out */
359   DEVCB_DRIVER_LINE_MEMBER(s3_state, pia24_ca2_w),      /* line CA2 out */
360   DEVCB_DRIVER_LINE_MEMBER(s3_state, pia24_cb2_w),      /* line CB2 out */
361361   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE),      /* IRQA */
362362   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE)      /* IRQB */
363363};
364364
365READ_LINE_MEMBER( s3_state::pia2_ca1_r )
365READ_LINE_MEMBER( s3_state::pia28_ca1_r )
366366{
367367   return BIT(ioport("DIAGS")->read(), 2); // advance button
368368}
369369
370READ_LINE_MEMBER( s3_state::pia2_cb1_r )
370READ_LINE_MEMBER( s3_state::pia28_cb1_r )
371371{
372372   return BIT(ioport("DIAGS")->read(), 3); // auto/manual switch
373373}
r18808r18809
414414   m_data_ok = false;
415415}
416416
417static const pia6821_interface pia2_intf =
417static const pia6821_interface pia28_intf =
418418{
419419   DEVCB_DRIVER_MEMBER(s3_state, dips_r),      /* port A in */
420420   DEVCB_NULL,      /* port B in */
421   DEVCB_DRIVER_LINE_MEMBER(s3_state, pia2_ca1_r),      /* line CA1 in */
422   DEVCB_DRIVER_LINE_MEMBER(s3_state, pia2_cb1_r),      /* line CB1 in */
421   DEVCB_DRIVER_LINE_MEMBER(s3_state, pia28_ca1_r),      /* line CA1 in */
422   DEVCB_DRIVER_LINE_MEMBER(s3_state, pia28_cb1_r),      /* line CB1 in */
423423   DEVCB_NULL,      /* line CA2 in */
424424   DEVCB_NULL,      /* line CB2 in */
425425   DEVCB_DRIVER_MEMBER(s3_state, dig0_w),      /* port A out */
426426   DEVCB_DRIVER_MEMBER(s3_state, dig1_w),      /* port B out */
427   DEVCB_DRIVER_LINE_MEMBER(s3_state, pia2_ca2_w),      /* line CA2 out */
428   DEVCB_DRIVER_LINE_MEMBER(s3_state, pia2_cb2_w),      /* line CB2 out */
427   DEVCB_DRIVER_LINE_MEMBER(s3_state, pia28_ca2_w),      /* line CA2 out */
428   DEVCB_DRIVER_LINE_MEMBER(s3_state, pia28_cb2_w),      /* line CB2 out */
429429   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE),      /* IRQA */
430430   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE)      /* IRQB */
431431};
r18808r18809
442442   m_kbdrow = data;
443443}
444444
445static const pia6821_interface pia3_intf =
445static const pia6821_interface pia30_intf =
446446{
447447   DEVCB_DRIVER_MEMBER(s3_state, switch_r),      /* port A in */
448448   DEVCB_NULL,      /* port B in */
r18808r18809
452452   DEVCB_NULL,      /* line CB2 in */
453453   DEVCB_NULL,      /* port A out */
454454   DEVCB_DRIVER_MEMBER(s3_state, switch_w),      /* port B out */
455   DEVCB_DRIVER_LINE_MEMBER(s3_state, pia3_ca2_w),      /* line CA2 out */
456   DEVCB_DRIVER_LINE_MEMBER(s3_state, pia3_cb2_w),      /* line CB2 out */
455   DEVCB_DRIVER_LINE_MEMBER(s3_state, pia30_ca2_w),      /* line CA2 out */
456   DEVCB_DRIVER_LINE_MEMBER(s3_state, pia30_cb2_w),      /* line CB2 out */
457457   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE),      /* IRQA */
458458   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE)      /* IRQB */
459459};
460460
461READ_LINE_MEMBER( s3_state::pia4_cb1_r )
461READ_LINE_MEMBER( s3_state::pias_cb1_r )
462462{
463463   return m_cb1;
464464}
r18808r18809
473473   m_dac->write_unsigned8(data);
474474}
475475
476static const pia6821_interface pia4_intf =
476static const pia6821_interface pias_intf =
477477{
478478   DEVCB_NULL,      /* port A in */
479479   DEVCB_DRIVER_MEMBER(s3_state, dac_r),      /* port B in */
480480   DEVCB_NULL,      /* line CA1 in */
481   DEVCB_DRIVER_LINE_MEMBER(s3_state, pia4_cb1_r),      /* line CB1 in */
481   DEVCB_DRIVER_LINE_MEMBER(s3_state, pias_cb1_r),      /* line CB1 in */
482482   DEVCB_NULL,      /* line CA2 in */
483483   DEVCB_NULL,      /* line CB2 in */
484484   DEVCB_DRIVER_MEMBER(s3_state, dac_w),      /* port A out */
r18808r18809
511511   MCFG_FRAGMENT_ADD( genpin_audio )
512512
513513   /* Devices */
514   MCFG_PIA6821_ADD("pia0", pia0_intf)
515   MCFG_PIA6821_ADD("pia1", pia1_intf)
516   MCFG_PIA6821_ADD("pia2", pia2_intf)
517   MCFG_PIA6821_ADD("pia3", pia3_intf)
514   MCFG_PIA6821_ADD("pia22", pia22_intf)
515   MCFG_PIA6821_ADD("pia24", pia24_intf)
516   MCFG_PIA6821_ADD("pia28", pia28_intf)
517   MCFG_PIA6821_ADD("pia30", pia30_intf)
518518   MCFG_NVRAM_ADD_1FILL("nvram")
519519MACHINE_CONFIG_END
520520
r18808r18809
526526   MCFG_SPEAKER_STANDARD_MONO("mono")
527527   MCFG_SOUND_ADD("dac", DAC, 0)
528528   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
529   MCFG_PIA6821_ADD("pia4", pia4_intf)
529   MCFG_PIA6821_ADD("pias", pias_intf)
530530MACHINE_CONFIG_END
531531
532532
r18808r18809
620620
621621GAME( 1977, httip_l1, 0, s3,  s3, driver_device, 0, ROT0, "Williams", "Hot Tip (L-1)", GAME_MECHANICAL )
622622GAME( 1977, lucky_l1, 0, s3,  s3, driver_device, 0, ROT0, "Williams", "Lucky Seven (L-1)", GAME_MECHANICAL )
623GAME( 1978, wldcp_l1, 0, s3a, s3, driver_device, 0, ROT0, "Williams", "World Cup Soccer (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING)
624GAME( 1978, cntct_l1, 0, s3a, s3, driver_device, 0, ROT0, "Williams", "Contact (L-1)", GAME_MECHANICAL)
625GAME( 1978, disco_l1, 0, s3a, s3, driver_device, 0, ROT0, "Williams", "Disco Fever (L-1)", GAME_MECHANICAL)
626GAME( 1978, phnix_l1, 0, s3a, s3, driver_device, 0, ROT0, "Williams", "Phoenix (L-1)", GAME_MECHANICAL)
627GAME( 1978, pkrno_l1, 0, s3a, s3, driver_device, 0, ROT0, "Williams", "Pokerino (L-1)", GAME_MECHANICAL)
623GAME( 1978, wldcp_l1, 0, s3a, s3, driver_device, 0, ROT0, "Williams", "World Cup Soccer (L-1)", GAME_MECHANICAL )
624GAME( 1978, cntct_l1, 0, s3a, s3, driver_device, 0, ROT0, "Williams", "Contact (L-1)", GAME_MECHANICAL )
625GAME( 1978, disco_l1, 0, s3a, s3, driver_device, 0, ROT0, "Williams", "Disco Fever (L-1)", GAME_MECHANICAL )
626GAME( 1978, phnix_l1, 0, s3a, s3, driver_device, 0, ROT0, "Williams", "Phoenix (L-1)", GAME_MECHANICAL )
627GAME( 1978, pkrno_l1, 0, s3a, s3, driver_device, 0, ROT0, "Williams", "Pokerino (L-1)", GAME_MECHANICAL )
trunk/src/mame/drivers/s7.c
r18808r18809
44    Williams System 7
55
66    Status of games:
7    - Inputs don't work so unable to play.
8    - Display works.
9    - Sound test works.
710
8
911ToDo:
1012
1113*****************************************************************************************/
r18808r18809
2830   m_audiocpu(*this, "audiocpu"),
2931   m_dac(*this, "dac"),
3032   m_hc55516(*this, "hc55516"),
31   m_pia(*this, "pia"),
33   m_pias(*this, "pias"),
3234   m_pia21(*this, "pia21"),
3335   m_pia22(*this, "pia22"),
3436   m_pia24(*this, "pia24"),
r18808r18809
5052   DECLARE_READ8_MEMBER(dips_r);
5153   DECLARE_READ8_MEMBER(switch_r);
5254   DECLARE_WRITE8_MEMBER(switch_w);
53   DECLARE_READ_LINE_MEMBER(pia_ca1_r);
55   DECLARE_READ_LINE_MEMBER(pias_ca1_r);
5456   DECLARE_READ_LINE_MEMBER(pia21_ca1_r);
5557   DECLARE_READ_LINE_MEMBER(pia28_ca1_r);
5658   DECLARE_READ_LINE_MEMBER(pia28_cb1_r);
57   DECLARE_WRITE_LINE_MEMBER(pia_ca2_w);
58   DECLARE_WRITE_LINE_MEMBER(pia_cb2_w);
59   DECLARE_WRITE_LINE_MEMBER(pias_ca2_w);
60   DECLARE_WRITE_LINE_MEMBER(pias_cb2_w);
5961   DECLARE_WRITE_LINE_MEMBER(pia21_ca2_w) { };
6062   DECLARE_WRITE_LINE_MEMBER(pia21_cb2_w) { }; // enable solenoids
6163   DECLARE_WRITE_LINE_MEMBER(pia22_ca2_w) { }; //ST5
r18808r18809
7476
7577   // devices
7678   required_device<cpu_device> m_maincpu;
77   optional_device<cpu_device> m_audiocpu;
78   optional_device<dac_device> m_dac;
79   optional_device<hc55516_device> m_hc55516;
80   optional_device<pia6821_device> m_pia;
79   required_device<cpu_device> m_audiocpu;
80   required_device<dac_device> m_dac;
81   required_device<hc55516_device> m_hc55516;
82   required_device<pia6821_device> m_pias;
8183   required_device<pia6821_device> m_pia21;
8284   required_device<pia6821_device> m_pia22;
8385   required_device<pia6821_device> m_pia24;
r18808r18809
106108
107109static ADDRESS_MAP_START( s7_audio_map, AS_PROGRAM, 8, s7_state )
108110   AM_RANGE(0x0000, 0x00ff) AM_RAM
109   AM_RANGE(0x0400, 0x0403) AM_MIRROR(0x8000) AM_DEVREADWRITE("pia", pia6821_device, read, write)
111   AM_RANGE(0x0400, 0x0403) AM_MIRROR(0x8000) AM_DEVREADWRITE("pias", pia6821_device, read, write)
110112   AM_RANGE(0xA000, 0xffff) AM_ROM
111113ADDRESS_MAP_END
112114
r18808r18809
242244MACHINE_RESET_MEMBER( s7_state, s7 )
243245{
244246   m_t_c = 0;
245   // reset the IRQ state
246   m_pia->cb1_w(1);
247247}
248248
249249INPUT_CHANGED_MEMBER( s7_state::main_nmi )
r18808r18809
275275{
276276   m_sound_data = data;
277277   m_cb1 = ((m_sound_data & 0x8f) != 0x8f);
278   m_pia->cb1_w(m_cb1);
278   m_pias->cb1_w(m_cb1);
279279}
280280
281281static const pia6821_interface pia21_intf =
r18808r18809
403403{
404404   char kbdrow[8];
405405   sprintf(kbdrow,"X%X",m_kbdrow);
406   return ioport(kbdrow)->read();
406   return ~ioport(kbdrow)->read();
407407}
408408
409409WRITE8_MEMBER( s7_state::switch_w )
r18808r18809
427427   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE)      /* IRQB */
428428};
429429
430WRITE_LINE_MEMBER( s7_state::pia_cb2_w )
430WRITE_LINE_MEMBER( s7_state::pias_cb2_w )
431431{
432432// speech clock
433433   hc55516_clock_w(m_hc55516, state);
434434}
435435
436WRITE_LINE_MEMBER( s7_state::pia_ca2_w )
436WRITE_LINE_MEMBER( s7_state::pias_ca2_w )
437437{
438438// speech data
439439   hc55516_digit_w(m_hc55516, state);
r18808r18809
449449   m_dac->write_unsigned8(data);
450450}
451451
452static const pia6821_interface pia_intf =
452static const pia6821_interface pias_intf =
453453{
454454   DEVCB_NULL,      /* port A in */
455455   DEVCB_DRIVER_MEMBER(s7_state, dac_r),      /* port B in */
r18808r18809
459459   DEVCB_NULL,      /* line CB2 in */
460460   DEVCB_DRIVER_MEMBER(s7_state, dac_w),      /* port A out */
461461   DEVCB_NULL,      /* port B out */
462   DEVCB_DRIVER_LINE_MEMBER(s7_state, pia_ca2_w),      /* line CA2 out */
463   DEVCB_DRIVER_LINE_MEMBER(s7_state, pia_cb2_w),      /* line CB2 out */
462   DEVCB_DRIVER_LINE_MEMBER(s7_state, pias_ca2_w),      /* line CA2 out */
463   DEVCB_DRIVER_LINE_MEMBER(s7_state, pias_cb2_w),      /* line CB2 out */
464464   DEVCB_CPU_INPUT_LINE("audiocpu", M6800_IRQ_LINE),      /* IRQA */
465465   DEVCB_CPU_INPUT_LINE("audiocpu", M6800_IRQ_LINE)      /* IRQB */
466466};
r18808r18809
502502   MCFG_SPEAKER_STANDARD_MONO("speech")
503503   MCFG_SOUND_ADD("hc55516", HC55516, 0)
504504   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speech", 0.50)
505   MCFG_PIA6821_ADD("pia", pia_intf)
505   MCFG_PIA6821_ADD("pias", pias_intf)
506506MACHINE_CONFIG_END
507507
508508
r18808r18809
615615   ROM_LOAD("ic17.532", 0x7000, 0x1000, CRC(bb571a17) SHA1(fb0b7f247673dae0744d4188e1a03749a2237165) )
616616
617617   ROM_REGION(0x10000, "audiocpu", 0)
618   ROM_LOAD("sound12.716", 0x7800, 0x0800, CRC(05a2230c) SHA1(c57cd7628310aa8f68ca24217aad1ead066a1a82))
619   ROM_RELOAD( 0xf800, 0x0800)
618   ROM_LOAD("sound12.716", 0xf800, 0x0800, CRC(05a2230c) SHA1(c57cd7628310aa8f68ca24217aad1ead066a1a82))
620619ROM_END
621620
622621/*-----------------------------------
r18808r18809
776775
777776
778777
779GAME( 1982, vrkon_l1, 0,     s7, s7, driver_device, 0, ROT0, "Williams", "Varkon (L-1)", GAME_IS_SKELETON_MECHANICAL)
780GAME( 1981, barra_l1, 0,     s7, s7, driver_device, 0, ROT0, "Williams", "Barracora (L-1)", GAME_IS_SKELETON_MECHANICAL)
781GAME( 1980, bk_l4,    0,     s7, s7, driver_device, 0, ROT0, "Williams", "Black Knight (L-4)", GAME_IS_SKELETON_MECHANICAL)
782GAME( 1980, bk_f4,    bk_l4, s7, s7, driver_device, 0, ROT0, "Williams", "Black Knight (L-4, French speech)", GAME_IS_SKELETON_MECHANICAL)
783GAME( 1980, bk_l3,    bk_l4, s7, s7, driver_device, 0, ROT0, "Williams", "Black Knight (L-3)", GAME_IS_SKELETON_MECHANICAL)
784GAME( 1980, csmic_l1, 0,     s7, s7, driver_device, 0, ROT0, "Williams", "Cosmic Gunfight (L-1)", GAME_IS_SKELETON_MECHANICAL)
785GAME( 1982, dfndr_l4, 0,     s7, s7, driver_device, 0, ROT0, "Williams", "Defender (L-4)", GAME_IS_SKELETON_MECHANICAL)
786GAME( 1983, fpwr2_l2, 0,     s7, s7, driver_device, 0, ROT0, "Williams", "Firepower II (L-2)", GAME_IS_SKELETON_MECHANICAL)
787GAME( 1981, hypbl_l4, 0,     s7, s7, driver_device, 0, ROT0, "Williams", "HyperBall (L-4)", GAME_IS_SKELETON_MECHANICAL)
788GAME( 1983, jst_l2,   0,     s7, s7, driver_device, 0, ROT0, "Williams", "Joust (L-2)", GAME_IS_SKELETON_MECHANICAL)
789GAME( 1981, jngld_l2, 0,     s7, s7, driver_device, 0, ROT0, "Williams", "Jungle Lord (L-2)", GAME_IS_SKELETON_MECHANICAL)
790GAME( 1983, lsrcu_l2, 0,     s7, s7, driver_device, 0, ROT0, "Williams", "Laser Cue (L-2)", GAME_IS_SKELETON_MECHANICAL)
791GAME( 1981, pharo_l2, 0,     s7, s7, driver_device, 0, ROT0, "Williams", "Pharaoh (L-2)", GAME_IS_SKELETON_MECHANICAL)
792GAME( 1981, solar_l2, 0,     s7, s7, driver_device, 0, ROT0, "Williams", "Solar Fire (L-2)", GAME_IS_SKELETON_MECHANICAL)
793GAME( 1984, strlt_l1, 0,     s7, s7, driver_device, 0, ROT0, "Williams", "Star Light (L-1)", GAME_IS_SKELETON_MECHANICAL)
794GAME( 1982, tmfnt_l5, 0,     s7, s7, driver_device, 0, ROT0, "Williams", "Time Fantasy (L-5)", GAME_IS_SKELETON_MECHANICAL)
795GAME( 1982, wrlok_l3, 0,     s7, s7, driver_device, 0, ROT0, "Williams", "Warlok (L-3)", GAME_IS_SKELETON_MECHANICAL)
796GAME( 1982, thund_p1, 0,     s7, s7, driver_device, 0, ROT0, "Williams", "Thunderball (P-1)", GAME_IS_SKELETON_MECHANICAL)
778GAME( 1982, vrkon_l1, 0,     s7, s7, driver_device, 0, ROT0, "Williams", "Varkon (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
779GAME( 1981, barra_l1, 0,     s7, s7, driver_device, 0, ROT0, "Williams", "Barracora (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
780GAME( 1980, bk_l4,    0,     s7, s7, driver_device, 0, ROT0, "Williams", "Black Knight (L-4)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
781GAME( 1980, bk_f4,    bk_l4, s7, s7, driver_device, 0, ROT0, "Williams", "Black Knight (L-4, French speech)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
782GAME( 1980, bk_l3,    bk_l4, s7, s7, driver_device, 0, ROT0, "Williams", "Black Knight (L-3)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
783GAME( 1980, csmic_l1, 0,     s7, s7, driver_device, 0, ROT0, "Williams", "Cosmic Gunfight (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
784GAME( 1982, dfndr_l4, 0,     s7, s7, driver_device, 0, ROT0, "Williams", "Defender (L-4)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
785GAME( 1983, fpwr2_l2, 0,     s7, s7, driver_device, 0, ROT0, "Williams", "Firepower II (L-2)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
786GAME( 1981, hypbl_l4, 0,     s7, s7, driver_device, 0, ROT0, "Williams", "HyperBall (L-4)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
787GAME( 1983, jst_l2,   0,     s7, s7, driver_device, 0, ROT0, "Williams", "Joust (L-2)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
788GAME( 1981, jngld_l2, 0,     s7, s7, driver_device, 0, ROT0, "Williams", "Jungle Lord (L-2)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
789GAME( 1983, lsrcu_l2, 0,     s7, s7, driver_device, 0, ROT0, "Williams", "Laser Cue (L-2)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
790GAME( 1981, pharo_l2, 0,     s7, s7, driver_device, 0, ROT0, "Williams", "Pharaoh (L-2)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
791GAME( 1981, solar_l2, 0,     s7, s7, driver_device, 0, ROT0, "Williams", "Solar Fire (L-2)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
792GAME( 1984, strlt_l1, 0,     s7, s7, driver_device, 0, ROT0, "Williams", "Star Light (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
793GAME( 1982, tmfnt_l5, 0,     s7, s7, driver_device, 0, ROT0, "Williams", "Time Fantasy (L-5)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
794GAME( 1982, wrlok_l3, 0,     s7, s7, driver_device, 0, ROT0, "Williams", "Warlok (L-3)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
795GAME( 1982, thund_p1, 0,     s7, s7, driver_device, 0, ROT0, "Williams", "Thunderball (P-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
trunk/src/mame/drivers/s9.c
r18808r18809
3333   m_audiocpu(*this, "audiocpu"),
3434   m_dac(*this, "dac"),
3535   m_hc55516(*this, "hc55516"),
36   m_pia(*this, "pia"),
36   m_pias(*this, "pias"),
3737   m_pia21(*this, "pia21"),
3838   m_pia24(*this, "pia24"),
3939   m_pia28(*this, "pia28"),
r18808r18809
5252   DECLARE_READ8_MEMBER(dips_r);
5353   DECLARE_READ8_MEMBER(switch_r);
5454   DECLARE_WRITE8_MEMBER(switch_w);
55   DECLARE_READ_LINE_MEMBER(pia_ca1_r);
55   DECLARE_READ_LINE_MEMBER(pias_ca1_r);
5656   DECLARE_READ_LINE_MEMBER(pia21_ca1_r);
5757   DECLARE_READ_LINE_MEMBER(pia28_ca1_r);
5858   DECLARE_READ_LINE_MEMBER(pia28_cb1_r);
59   DECLARE_WRITE_LINE_MEMBER(pia_ca2_w);
60   DECLARE_WRITE_LINE_MEMBER(pia_cb2_w);
59   DECLARE_WRITE_LINE_MEMBER(pias_ca2_w);
60   DECLARE_WRITE_LINE_MEMBER(pias_cb2_w);
6161   DECLARE_WRITE_LINE_MEMBER(pia21_ca2_w);
6262   DECLARE_WRITE_LINE_MEMBER(pia21_cb2_w) { }; // enable solenoids
6363   DECLARE_WRITE_LINE_MEMBER(pia24_cb2_w) { }; // dummy to stop error log filling up
r18808r18809
7171
7272   // devices
7373   required_device<cpu_device> m_maincpu;
74   optional_device<cpu_device> m_audiocpu;
75   optional_device<dac_device> m_dac;
76   optional_device<hc55516_device> m_hc55516;
77   optional_device<pia6821_device> m_pia;
74   required_device<cpu_device> m_audiocpu;
75   required_device<dac_device> m_dac;
76   required_device<hc55516_device> m_hc55516;
77   required_device<pia6821_device> m_pias;
7878   required_device<pia6821_device> m_pia21;
7979   required_device<pia6821_device> m_pia24;
8080   required_device<pia6821_device> m_pia28;
r18808r18809
101101
102102static ADDRESS_MAP_START( s9_audio_map, AS_PROGRAM, 8, s9_state )
103103   AM_RANGE(0x0000, 0x07ff) AM_RAM
104   AM_RANGE(0x2000, 0x2003) AM_DEVREADWRITE("pia", pia6821_device, read, write)
104   AM_RANGE(0x2000, 0x2003) AM_DEVREADWRITE("pias", pia6821_device, read, write)
105105   AM_RANGE(0x8000, 0xffff) AM_ROM
106106ADDRESS_MAP_END
107107
r18808r18809
185185MACHINE_RESET_MEMBER( s9_state, s9 )
186186{
187187   m_t_c = 0;
188   // reset the IRQ state
189   m_pia->ca1_w(1);
190188}
191189
192190INPUT_CHANGED_MEMBER( s9_state::main_nmi )
r18808r18809
224222{
225223// sound ns
226224   m_ca1 = state;
227   m_pia->ca1_w(m_ca1);
225   m_pias->ca1_w(m_ca1);
228226}
229227
230228static const pia6821_interface pia21_intf =
r18808r18809
338336   DEVCB_CPU_INPUT_LINE("maincpu", M6800_IRQ_LINE)      /* IRQB */
339337};
340338
341READ_LINE_MEMBER( s9_state::pia_ca1_r )
339READ_LINE_MEMBER( s9_state::pias_ca1_r )
342340{
343341   return m_ca1;
344342}
345343
346WRITE_LINE_MEMBER( s9_state::pia_ca2_w )
344WRITE_LINE_MEMBER( s9_state::pias_ca2_w )
347345{
348346// speech clock
349347   hc55516_clock_w(m_hc55516, state);
350348}
351349
352WRITE_LINE_MEMBER( s9_state::pia_cb2_w )
350WRITE_LINE_MEMBER( s9_state::pias_cb2_w )
353351{
354352// speech data
355353   hc55516_digit_w(m_hc55516, state);
r18808r18809
365363   m_dac->write_unsigned8(data);
366364}
367365
368static const pia6821_interface pia_intf =
366static const pia6821_interface pias_intf =
369367{
370368   DEVCB_DRIVER_MEMBER(s9_state, dac_r),      /* port A in */
371369   DEVCB_NULL,      /* port B in */
372   DEVCB_DRIVER_LINE_MEMBER(s9_state, pia_ca1_r),      /* line CA1 in */
370   DEVCB_DRIVER_LINE_MEMBER(s9_state, pias_ca1_r),      /* line CA1 in */
373371   DEVCB_LINE_GND,      /* line CB1 in */
374372   DEVCB_NULL,      /* line CA2 in */
375373   DEVCB_NULL,      /* line CB2 in */
376374   DEVCB_DRIVER_MEMBER(s9_state, sound_w),      /* port A out */
377375   DEVCB_DRIVER_MEMBER(s9_state, dac_w),      /* port B out */
378   DEVCB_DRIVER_LINE_MEMBER(s9_state, pia_ca2_w),      /* line CA2 out */
379   DEVCB_DRIVER_LINE_MEMBER(s9_state, pia_cb2_w),      /* line CB2 out */
376   DEVCB_DRIVER_LINE_MEMBER(s9_state, pias_ca2_w),      /* line CA2 out */
377   DEVCB_DRIVER_LINE_MEMBER(s9_state, pias_cb2_w),      /* line CB2 out */
380378   DEVCB_CPU_INPUT_LINE("audiocpu", M6800_IRQ_LINE),      /* IRQA */
381379   DEVCB_CPU_INPUT_LINE("audiocpu", M6800_IRQ_LINE)      /* IRQB */
382380};
r18808r18809
417415   MCFG_SPEAKER_STANDARD_MONO("speech")
418416   MCFG_SOUND_ADD("hc55516", HC55516, 0)
419417   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speech", 0.50)
420   MCFG_PIA6821_ADD("pia", pia_intf)
418   MCFG_PIA6821_ADD("pias", pias_intf)
421419MACHINE_CONFIG_END
422420
423421/*-----------------------------

Previous 199869 Revisions Next


© 1997-2024 The MAME Team