Previous 199869 Revisions Next

r32427 Saturday 27th September, 2014 at 05:38:59 UTC by Robbbert
s4.c : fixed sound, 4 games marked as working (Flash,Stellar Wars,TriZone,TimeWarp)
[src/mame/drivers]s4.c

trunk/src/mame/drivers/s4.c
r32426r32427
1616    Since the maximum score is 300, the displays have 4 digits and 6 can play. They
1717    are Williams System 5 and should be moved to a separate driver.
1818
19    Stellar Wars - it works, but the music is half-missing.
20    Flash - coins and start works, but not much else.
2119
20Each game has its own switches, you need to know the outhole and slam-tilt ones.
21Note that T is also a tilt, but it may take 3 hits to activate it.
22
23Game          Outhole   Tilt
24------------------------------------
25Flash         O         I
26Stellar Wars  X
27TriZone       X         ]
28Time Warp     X         E
29
30
2231ToDo:
23- Almost Everything
32- Scorpion: start button not working
33- Shuffle games: need a layout, and don't work.
2434
2535
26
2736************************************************************************************/
2837
2938#include "machine/genpin.h"
r32426r32427
3746{
3847public:
3948   s4_state(const machine_config &mconfig, device_type type, const char *tag)
40      : genpin_class(mconfig, type, tag),
41   m_maincpu(*this, "maincpu"),
42   m_audiocpu(*this, "audiocpu"),
43   m_dac(*this, "dac"),
44   m_pia22(*this, "pia22"),
45   m_pia24(*this, "pia24"),
46   m_pia28(*this, "pia28"),
47   m_pia30(*this, "pia30"),
48   m_pias(*this, "pias")
49      : genpin_class(mconfig, type, tag)
50      , m_maincpu(*this, "maincpu")
51      , m_audiocpu(*this, "audiocpu")
52      , m_dac(*this, "dac")
53      , m_pia22(*this, "pia22")
54      , m_pia24(*this, "pia24")
55      , m_pia28(*this, "pia28")
56      , m_pia30(*this, "pia30")
57      , m_pias(*this, "pias")
4958   { }
5059
5160   DECLARE_READ8_MEMBER(dac_r);
r32426r32427
6170   DECLARE_WRITE8_MEMBER(switch_w);
6271   DECLARE_READ_LINE_MEMBER(pia28_ca1_r);
6372   DECLARE_READ_LINE_MEMBER(pia28_cb1_r);
64   DECLARE_READ_LINE_MEMBER(pias_cb1_r);
6573   DECLARE_WRITE_LINE_MEMBER(pia22_ca2_w) { }; //ST5
6674   DECLARE_WRITE_LINE_MEMBER(pia22_cb2_w) { }; //ST-solenoids enable
6775   DECLARE_WRITE_LINE_MEMBER(pia24_ca2_w) { }; //ST2
r32426r32427
7583   DECLARE_INPUT_CHANGED_MEMBER(audio_nmi);
7684   DECLARE_MACHINE_RESET(s4);
7785   DECLARE_MACHINE_RESET(s4a);
78protected:
79
80   // devices
86private:
87   UINT8 m_t_c;
88   UINT8 m_sound_data;
89   UINT8 m_strobe;
90   UINT8 m_kbdrow;
91   bool m_data_ok;
92   bool m_chimes;
8193   required_device<cpu_device> m_maincpu;
8294   optional_device<cpu_device> m_audiocpu;
8395   optional_device<dac_device> m_dac;
r32426r32427
8698   required_device<pia6821_device> m_pia28;
8799   required_device<pia6821_device> m_pia30;
88100   optional_device<pia6821_device> m_pias;
89private:
90   UINT8 m_t_c;
91   UINT8 m_sound_data;
92   UINT8 m_strobe;
93   UINT8 m_kbdrow;
94   bool m_cb1;
95   bool m_data_ok;
96   bool m_chimes;
97101};
98102
99103static ADDRESS_MAP_START( s4_main_map, AS_PROGRAM, 8, s4_state )
r32426r32427
129133   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER )
130134
131135   PORT_START("X2")
132   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_A)
136   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_X)
133137   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_S)
134138   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_D)
135139   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_F)
r32426r32427
153157   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_SLASH)
154158   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_COLON)
155159   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_QUOTE)
156   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_X)
160   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_A)
157161   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_MINUS)
158162   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_EQUALS)
159163   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSPACE)
r32426r32427
299303   }
300304   else
301305   {
302      m_sound_data = ioport("SND")->read();
306      UINT8 sound_data = ioport("SND")->read();
303307      if (BIT(data, 0))
304         m_sound_data &= 0xfe;
308         sound_data &= 0xfe;
305309
306310      if (BIT(data, 1))
307         m_sound_data &= 0xfd;
311         sound_data &= 0xfd;
308312
309313      if (BIT(data, 2))
310         m_sound_data &= 0xfb;
314         sound_data &= 0xfb;
311315
312316      if (BIT(data, 3))
313         m_sound_data &= 0xf7;
317         sound_data &= 0xf7;
314318
315319      if (BIT(data, 4))
316         m_sound_data &= 0x7f;
320         sound_data &= 0xef;
317321
318      m_cb1 = ((m_sound_data & 0x9f) != 0x9f);
322      bool cb1 = ((sound_data & 0x9f) != 0x9f);
319323
320      m_pias->cb1_w(m_cb1);
324      if (cb1)
325         m_sound_data = sound_data;
326
327      m_pias->cb1_w(cb1);
321328   }
322329
323330   if (BIT(data, 5))
r32426r32427
366373{
367374   m_strobe = data & 15;
368375   m_data_ok = true;
369   output_set_value("led0", BIT(data, 4));
370   output_set_value("led1", BIT(data, 5));
376   output_set_value("led0", !BIT(data, 4));
377   output_set_value("led1", !BIT(data, 5));
371378}
372379
373380WRITE8_MEMBER( s4_state::dig1_w )
r32426r32427
393400   m_kbdrow = data;
394401}
395402
396READ_LINE_MEMBER( s4_state::pias_cb1_r )
397{
398   return m_cb1;
399}
400
401403READ8_MEMBER( s4_state::dac_r )
402404{
403405   return m_sound_data;
r32426r32427
408410   m_dac->write_unsigned8(data);
409411}
410412
411TIMER_DEVICE_CALLBACK_MEMBER( s4_state::irq)
413TIMER_DEVICE_CALLBACK_MEMBER( s4_state::irq )
412414{
413415   if (m_t_c > 0x70)
414416      m_maincpu->set_input_line(M6800_IRQ_LINE, ASSERT_LINE);
r32426r32427
479481
480482   MCFG_DEVICE_ADD("pias", PIA6821, 0)
481483   MCFG_PIA_READPB_HANDLER(READ8(s4_state, dac_r))
482   MCFG_PIA_READCB1_HANDLER(READLINE(s4_state, pias_cb1_r))
483484   MCFG_PIA_WRITEPA_HANDLER(WRITE8(s4_state, dac_w))
484485   MCFG_PIA_IRQA_HANDLER(DEVWRITELINE("audiocpu", m6808_cpu_device, irq_line))
485486   MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("audiocpu", m6808_cpu_device, irq_line))
r32426r32427
702703ROM_END
703704
704705
705GAME( 1979, flash_l2, 0,        s4a, s4, driver_device, 0, ROT0, "Williams", "Flash (L-2)", GAME_MECHANICAL | GAME_NO_SOUND)
706GAME( 1979, flash_l1, flash_l2, s4a, s4, driver_device, 0, ROT0, "Williams", "Flash (L-1)", GAME_MECHANICAL | GAME_NO_SOUND)
707GAME( 1979, flash_t1, flash_l2, s4a, s4, driver_device, 0, ROT0, "Williams", "Flash (T-1) Ted Estes", GAME_MECHANICAL | GAME_NO_SOUND)
708GAME( 1978, trizn_l1, 0,        s4a, s4, driver_device, 0, ROT0, "Williams", "Tri Zone (L-1)", GAME_MECHANICAL | GAME_NO_SOUND)
709GAME( 1978, trizn_t1, trizn_l1, s4a, s4, driver_device, 0, ROT0, "Williams", "Tri Zone (T-1)", GAME_MECHANICAL | GAME_NO_SOUND)
710GAME( 1979, tmwrp_l2, 0,        s4a, s4, driver_device, 0, ROT0, "Williams", "Time Warp (L-2)", GAME_MECHANICAL | GAME_NO_SOUND)
711GAME( 1979, tmwrp_t2, tmwrp_l2, s4a, s4, driver_device, 0, ROT0, "Williams", "Time Warp (T-2)", GAME_MECHANICAL | GAME_NO_SOUND)
712GAME( 1979, stlwr_l2, 0,        s4a, s4, driver_device, 0, ROT0, "Williams", "Stellar Wars (L-2)", GAME_MECHANICAL | GAME_NO_SOUND)
706GAME( 1979, flash_l2, 0,        s4a, s4, driver_device, 0, ROT0, "Williams", "Flash (L-2)", GAME_MECHANICAL )
707GAME( 1979, flash_l1, flash_l2, s4a, s4, driver_device, 0, ROT0, "Williams", "Flash (L-1)", GAME_MECHANICAL )
708GAME( 1979, flash_t1, flash_l2, s4a, s4, driver_device, 0, ROT0, "Williams", "Flash (T-1) Ted Estes", GAME_MECHANICAL )
709GAME( 1978, trizn_l1, 0,        s4a, s4, driver_device, 0, ROT0, "Williams", "Tri Zone (L-1)", GAME_MECHANICAL )
710GAME( 1978, trizn_t1, trizn_l1, s4a, s4, driver_device, 0, ROT0, "Williams", "Tri Zone (T-1)", GAME_MECHANICAL )
711GAME( 1979, tmwrp_l2, 0,        s4a, s4, driver_device, 0, ROT0, "Williams", "Time Warp (L-2)", GAME_MECHANICAL )
712GAME( 1979, tmwrp_t2, tmwrp_l2, s4a, s4, driver_device, 0, ROT0, "Williams", "Time Warp (T-2)", GAME_MECHANICAL )
713GAME( 1979, stlwr_l2, 0,        s4a, s4, driver_device, 0, ROT0, "Williams", "Stellar Wars (L-2)", GAME_MECHANICAL )
713714GAME( 1980, scrpn_l1, 0,        s4a, s4, driver_device, 0, ROT0, "Williams", "Scorpion (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
714715GAME( 1980, scrpn_t1, scrpn_l1, s4a, s4, driver_device, 0, ROT0, "Williams", "Scorpion (T-1)", GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND)
715716GAME( 1978, pomp_l1,  0,        s4a, s4, driver_device, 0, ROT0, "Williams", "Pompeii (Shuffle) (L-1)", GAME_MECHANICAL | GAME_NOT_WORKING)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team