Previous 199869 Revisions Next

r32065 Thursday 11th September, 2014 at 12:01:10 UTC by Robbbert
zac_proto.c : used correct cpu, fixed inputs, added mechanical sounds. All 3 games are playable.
[src/mame/drivers]zac_proto.c

trunk/src/mame/drivers/zac_proto.c
r32064r32065
88    These use the INS8060 (SC/MP) processor, and are Zaccaria's first
99    digital machines.
1010
11    The inputs work with 'strike' and 'skijump'.
12    The playboard inputs are unknown.
11    After starting a game, press X, wait for the sound of the ball
12    being ejected, then press Z. Now you can get a score.
1313
14    The ball number is how many balls are left. 1 = last ball.
15
16
1417ToDo:
15- Mirrors of ram and switches
16- battery backup of ram
17- Inputs
18- Outputs
19- Sound
18- Mechanical
19- Sound board, no info available. Also knocker output not known.
2020
2121**********************************************************************/
2222
r32064r32065
2424#include "cpu/scmp/scmp.h"
2525#include "zac_proto.lh"
2626
27class zac_proto_state : public driver_device
27class zac_proto_state : public genpin_class
2828{
2929public:
3030   zac_proto_state(const machine_config &mconfig, device_type type, const char *tag)
31      : driver_device(mconfig, type, tag)
31      : genpin_class(mconfig, type, tag)
3232      , m_maincpu(*this, "maincpu")
3333   { }
3434
r32064r32065
6363static INPUT_PORTS_START( zac_proto )
6464   // playfield inputs
6565   PORT_START("PL0")
66   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_COIN1 )
67   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_COIN2 )
68   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_START )
69   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_OTHER)
70   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_OTHER)
71   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_OTHER)
72   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_OTHER)
73   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_OTHER)
66   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
67   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_COIN2 )
68   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_START )
69   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_TILT)
70   PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_Z)
71   PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_X) PORT_NAME("Outhole")
72   PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_COLON)
73   PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_QUOTE)
7474   PORT_START("PL1")
75   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_OTHER)
76   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_OTHER)
77   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_OTHER)
78   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_OTHER)
79   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_OTHER)
80   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_OTHER)
81   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_OTHER)
82   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_OTHER)
75   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_Q)
76   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_W)
77   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_E)
78   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_R)
79   PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_Y)
80   PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_U)
81   PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_I)
82   PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_O)
8383   PORT_START("PL2")
84   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_OTHER)
85   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_OTHER)
86   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_OTHER)
87   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_OTHER)
88   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_OTHER)
89   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_OTHER)
90   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_OTHER)
91   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_OTHER)
84   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_A)
85   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_S)
86   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_D)
87   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_F)
88   PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_G)
89   PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_H)
90   PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_J)
91   PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_K)
9292   PORT_START("PL3")
93   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_OTHER)
94   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_OTHER)
95   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_OTHER)
96   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_OTHER)
97   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_OTHER)
98   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_OTHER)
99   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_OTHER)
100   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_OTHER)
93   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_L)
94   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_C)
95   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_V)
96   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_B)
97   PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_N)
98   PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_M)
99   PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_COMMA)
100   PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_OTHER) PORT_CODE(KEYCODE_STOP)
101101   PORT_START("PL4")
102   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_OTHER)
103   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_OTHER)
104   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_OTHER)
105   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_OTHER)
106   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_OTHER)
107   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_OTHER)
108   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_OTHER)
109   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_OTHER)
102   PORT_BIT(0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
110103
111104   // dipswitches
112105   PORT_START("PL5")
r32064r32065
191184   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
192185INPUT_PORTS_END
193186
187// solenoids (not knocker)
194188WRITE8_MEMBER( zac_proto_state::out0_w )
195189{
196// solenoids
190   UINT16 t = data | (offset << 8);
191
192   switch (t)
193   {
194      case 1:
195         m_samples->start(0, 5); // outhole
196         break;
197      case 2:
198      case 4:
199         m_samples->start(4, 7); // slings
200         break;
201      case 8:
202      case 16:
203      case 32:
204         m_samples->start(5, 0); // bumpers
205         break;
206   }
197207}
198208
199209WRITE8_MEMBER( zac_proto_state::out1_w )
r32064r32065
204214// need to implement blanking of leading zeroes
205215WRITE8_MEMBER( zac_proto_state::digit_w )
206216{
207   static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0, 0, 0, 0, 0, 0 };
217   static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71 }; // 9368 (outputs 0-9,A-F)
208218   static const UINT8 decimals[10] = { 0, 0, 0x80, 0, 0, 0x80, 0, 0, 0, 0 };
209219   offset<<=1;
210220   output_set_digit_value(offset, patterns[data&15] | decimals[offset]);
r32064r32065
214224
215225WRITE8_MEMBER( zac_proto_state::sound_w )
216226{
227// to unknown sound board
217228}
218229
219230void zac_proto_state::machine_reset()
r32064r32065
223234
224235static MACHINE_CONFIG_START( zac_proto, zac_proto_state )
225236   /* basic machine hardware */
226   MCFG_CPU_ADD("maincpu", SCMP, 1000000)
237   MCFG_CPU_ADD("maincpu", INS8060, XTAL_4MHz / 2) // Using SC/MP II chip which has an internal /2 circuit.
227238   MCFG_CPU_PROGRAM_MAP(zac_proto_map)
228239   MCFG_NVRAM_ADD_0FILL("nvram")
229240
230241   /* Video */
231242   MCFG_DEFAULT_LAYOUT(layout_zac_proto)
243
244   /* Sound */
245   MCFG_FRAGMENT_ADD( genpin_audio )
232246MACHINE_CONFIG_END
233247
234248/*--------------------------------
r32064r32065
264278   ROM_LOAD("zsc4.dat", 0x1400, 0x0400, CRC(69e0bb95) SHA1(d9a1d0159bf49445b0ece0f9d7806ed80657c2b2))
265279ROM_END
266280
267GAME(1978,  skijump,   0,  zac_proto,  zac_proto, driver_device,  0,  ROT0,  "Zaccaria",    "Ski Jump",        GAME_IS_SKELETON_MECHANICAL)
268GAME(1979,  spacecty,  0,  zac_proto,  zac_proto, driver_device,  0,  ROT0,  "Zaccaria",    "Space City",      GAME_IS_SKELETON_MECHANICAL)
269GAME(1978,  strike,    0,  zac_proto,  zac_proto, driver_device,  0,  ROT0,  "Zaccaria",    "Strike",          GAME_IS_SKELETON_MECHANICAL)
281GAME(1978,  skijump,   0,  zac_proto,  zac_proto, driver_device,  0,  ROT0, "Zaccaria", "Ski Jump", GAME_MECHANICAL | GAME_IMPERFECT_SOUND )
282GAME(1979,  spacecty,  0,  zac_proto,  zac_proto, driver_device,  0,  ROT0, "Zaccaria", "Space City", GAME_MECHANICAL | GAME_IMPERFECT_SOUND )
283GAME(1978,  strike,    0,  zac_proto,  zac_proto, driver_device,  0,  ROT0, "Zaccaria", "Strike", GAME_MECHANICAL | GAME_IMPERFECT_SOUND )

Previous 199869 Revisions Next


© 1997-2024 The MAME Team