Previous 199869 Revisions Next

r31660 Friday 15th August, 2014 at 03:48:39 UTC by Robbbert
hankin.c : mostly working; no sound.
[src/mame/drivers]hankin.c
[src/mame/layout]hankin.lay

trunk/src/mame/layout/hankin.lay
r31659r31660
2020   </element>
2121   <element name="P0"><text string="Ball / Match"><color red="1.0" green="1.0" blue="1.0" /></text></element>
2222   <element name="P1"><text string="Credits"><color red="1.0" green="1.0" blue="1.0" /></text></element>
23   <element name="P2"><text string="Players"><color red="1.0" green="1.0" blue="1.0" /></text></element>
2423   <element name="P3"><text string="Player 1"><color red="1.0" green="1.0" blue="1.0" /></text></element>
2524   <element name="P4"><text string="Player 2"><color red="1.0" green="1.0" blue="1.0" /></text></element>
2625   <element name="P5"><text string="Player 3"><color red="1.0" green="1.0" blue="1.0" /></text></element>
r31659r31660
117116      </bezel>
118117
119118      <!-- Credits and Balls -->
119      <bezel name="digit41" element="digit">
120         <bounds left="30" top="345" right="64" bottom="384" />
121      </bezel>
120122      <bezel name="digit40" element="digit">
121         <bounds left="39" top="345" right="73" bottom="384" />
123         <bounds left="69" top="345" right="103" bottom="384" />
122124      </bezel>
123      <bezel name="digit42" element="digit">
124         <bounds left="110" top="345" right="144" bottom="384" />
125      </bezel>
126125      <bezel name="digit44" element="digit">
127126         <bounds left="171" top="345" right="205" bottom="384" />
128127      </bezel>
129128      <bezel name="digit43" element="digit">
130129         <bounds left="210" top="345" right="244" bottom="384" />
131130      </bezel>
132      <bezel element="P2"><bounds left="100" right="158" top="330" bottom="342" /></bezel>
133131      <bezel element="P1"><bounds left="200" right="258" top="330" bottom="342" /></bezel>
134      <bezel element="P0"><bounds left="30" right="88" top="330" bottom="342" /></bezel>
132      <bezel element="P0"><bounds left="50" right="108" top="330" bottom="342" /></bezel>
135133      <bezel name="text3" element="P3"><bounds left="100" right="180" top="30" bottom="42" /></bezel>
136134      <bezel name="text2" element="P4"><bounds left="100" right="180" top="90" bottom="102" /></bezel>
137135      <bezel name="text1" element="P5"><bounds left="100" right="180" top="150" bottom="162" /></bezel>
trunk/src/mame/drivers/hankin.c
r31659r31660
77
88ToDo:
99- High score isn't saved or remembered
10- Display should be flouro blue 9-segment
1011- Sound
11- Inputs
12- Outputs
1312- Mechanical
1413
1514***********************************************************************************/
r31659r31660
4241
4342   DECLARE_DRIVER_INIT(hankin);
4443   DECLARE_WRITE_LINE_MEMBER(ic10_ca2_w);
44   DECLARE_WRITE_LINE_MEMBER(ic10_cb2_w);
4545   DECLARE_WRITE_LINE_MEMBER(ic11_ca2_w);
46   DECLARE_WRITE_LINE_MEMBER(ic11_cb2_w);
4647   DECLARE_WRITE8_MEMBER(ic10_a_w);
48   DECLARE_WRITE8_MEMBER(ic10_b_w);
4749   DECLARE_WRITE8_MEMBER(ic11_a_w);
4850   DECLARE_READ8_MEMBER(ic11_b_r);
4951   DECLARE_INPUT_CHANGED_MEMBER(self_test);
r31659r31660
5153private:
5254   bool m_timer_x;
5355   bool m_ic11_ca2;
56   bool m_ic10_cb2;
5457   UINT8 m_counter;
5558   UINT8 m_digit;
5659   UINT8 m_segment;
r31659r31660
9598   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Self Test") PORT_IMPULSE(1) PORT_CHANGED_MEMBER(DEVICE_SELF, hankin_state, self_test, 0)
9699
97100   PORT_START("DSW0")
98   PORT_DIPNAME( 0x01, 0x00, "S01") // S1-5: 32 combinations of coins/credits of a coin slot. S9-13 other slot.
101   PORT_DIPNAME( 0x07, 0x00, DEF_STR(Coinage))
102   PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ))
103   PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ))
104   PORT_DIPSETTING(    0x02, DEF_STR( 3C_1C ))
105   PORT_DIPSETTING(    0x03, DEF_STR( 4C_1C ))
106   PORT_DIPSETTING(    0x04, DEF_STR( 2C_3C ))
107   PORT_DIPSETTING(    0x05, DEF_STR( 3C_2C ))
108   PORT_DIPSETTING(    0x06, "5 coins 4 credits")
109   PORT_DIPSETTING(    0x07, "5 coins 2 credits")
110   PORT_DIPNAME( 0x08, 0x08, "Award")
111   PORT_DIPSETTING(    0x00, "Extra Ball")
112   PORT_DIPSETTING(    0x08, "Free Game")
113   PORT_DIPNAME( 0x10, 0x10, "Match")
99114   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
100   PORT_DIPSETTING(    0x01, DEF_STR( On ))
101   PORT_DIPNAME( 0x02, 0x00, "S02")
115   PORT_DIPSETTING(    0x10, DEF_STR( On ))
116   PORT_DIPNAME( 0x60, 0x40, "Credits for exceeding high score")
117   PORT_DIPSETTING(    0x00, "0")
118   PORT_DIPSETTING(    0x20, "1")
119   PORT_DIPSETTING(    0x40, "2")
120   PORT_DIPSETTING(    0x60, "3")
121   PORT_DIPNAME( 0x80, 0x00, "Game Over Tune")
102122   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
103   PORT_DIPSETTING(    0x02, DEF_STR( On ))
104   PORT_DIPNAME( 0x04, 0x00, "S03")
105   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
106   PORT_DIPSETTING(    0x04, DEF_STR( On ))
107   PORT_DIPNAME( 0x08, 0x00, "S04")
108   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
109   PORT_DIPSETTING(    0x08, DEF_STR( On ))
110   PORT_DIPNAME( 0x10, 0x00, "S05")
111   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
112   PORT_DIPSETTING(    0x10, DEF_STR( On ))
113   PORT_DIPNAME( 0x20, 0x20, "S06")
114   PORT_DIPSETTING(    0x00, DEF_STR( No ))
115   PORT_DIPSETTING(    0x20, DEF_STR( Yes ))
116   PORT_DIPNAME( 0x40, 0x40, "S07")
117   PORT_DIPSETTING(    0x00, DEF_STR( No ))
118   PORT_DIPSETTING(    0x40, DEF_STR( Yes ))
119   PORT_DIPNAME( 0x80, 0x80, "S08")
120   PORT_DIPSETTING(    0x00, DEF_STR( No ))
121   PORT_DIPSETTING(    0x80, DEF_STR( Yes ))
123   PORT_DIPSETTING(    0x80, DEF_STR( On ))
122124
123125   PORT_START("DSW1")
124   PORT_DIPNAME( 0x01, 0x00, "S09")
126   PORT_DIPNAME( 0x01, 0x00, "Coin Alarm")
125127   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
126128   PORT_DIPSETTING(    0x01, DEF_STR( On ))
127   PORT_DIPNAME( 0x02, 0x00, "S10")
129   PORT_DIPNAME( 0x02, 0x00, "S10 (game specific)")
128130   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
129131   PORT_DIPSETTING(    0x02, DEF_STR( On ))
130   PORT_DIPNAME( 0x04, 0x00, "S11")
132   PORT_DIPNAME( 0x04, 0x04, "Background Sound")
131133   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
132134   PORT_DIPSETTING(    0x04, DEF_STR( On ))
133   PORT_DIPNAME( 0x08, 0x00, "S12")
135   PORT_DIPNAME( 0x08, 0x00, "S12 (game Specific)")
134136   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
135137   PORT_DIPSETTING(    0x08, DEF_STR( On ))
136   PORT_DIPNAME( 0x10, 0x00, "S13")
138   PORT_DIPNAME( 0x10, 0x00, "S13 (game specific)")
137139   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
138140   PORT_DIPSETTING(    0x10, DEF_STR( On ))
139   PORT_DIPNAME( 0x20, 0x00, "S14")
140   PORT_DIPSETTING(    0x00, DEF_STR( Yes ))
141   PORT_DIPSETTING(    0x20, DEF_STR( No ))
142   PORT_DIPNAME( 0x40, 0x40, "S15")
143   PORT_DIPSETTING(    0x00, DEF_STR( No ))
144   PORT_DIPSETTING(    0x40, DEF_STR( Yes ))
145   PORT_DIPNAME( 0x80, 0x00, "S16")
146   PORT_DIPSETTING(    0x00, DEF_STR( No ))
147   PORT_DIPSETTING(    0x80, DEF_STR( Yes ))
141   PORT_DIPNAME( 0x20, 0x00, "S14 (game specific)")
142   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
143   PORT_DIPSETTING(    0x20, DEF_STR( On ))
144   PORT_DIPNAME( 0x40, 0x00, "S15 (game specific)")
145   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
146   PORT_DIPSETTING(    0x40, DEF_STR( On ))
147   PORT_DIPNAME( 0x80, 0x00, "Balls")
148   PORT_DIPSETTING(    0x00, "3")
149   PORT_DIPSETTING(    0x80, "5")
148150
149151   PORT_START("DSW2")
150   PORT_DIPNAME( 0x01, 0x00, "S17")
151   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
152   PORT_DIPSETTING(    0x01, DEF_STR( On ))
153   PORT_DIPNAME( 0x02, 0x00, "S18")
154   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
155   PORT_DIPSETTING(    0x02, DEF_STR( On ))
152   PORT_DIPNAME( 0x03, 0x02, "Maximum Credits")
153   PORT_DIPSETTING(    0x00, "5")
154   PORT_DIPSETTING(    0x01, "10")
155   PORT_DIPSETTING(    0x02, "15")
156   PORT_DIPSETTING(    0x03, "20")
156157   PORT_DIPNAME( 0x04, 0x00, "S19")
157158   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
158159   PORT_DIPSETTING(    0x04, DEF_STR( On ))
159160   PORT_DIPNAME( 0x08, 0x00, "S20")
160161   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
161162   PORT_DIPSETTING(    0x08, DEF_STR( On ))
162   PORT_DIPNAME( 0x10, 0x00, "S21")
163   PORT_DIPNAME( 0x10, 0x00, "Remember Bonus Multiplier")
163164   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
164165   PORT_DIPSETTING(    0x10, DEF_STR( On ))
165   PORT_DIPNAME( 0x20, 0x00, "S22")
166   PORT_DIPNAME( 0x20, 0x20, "Free Game Sound")
167   PORT_DIPSETTING(    0x00, "Special Tune")
168   PORT_DIPSETTING(    0x20, "Knocker")
169   PORT_DIPNAME( 0x40, 0x00, "Coin Counter reset") // see manual
166170   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
167   PORT_DIPSETTING(    0x20, DEF_STR( On ))
168   PORT_DIPNAME( 0x40, 0x00, "S23")
169   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
170171   PORT_DIPSETTING(    0x40, DEF_STR( On ))
171   PORT_DIPNAME( 0x80, 0x00, "S24")
172   PORT_DIPNAME( 0x80, 0x00, "Time out in test mode")
172173   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
173174   PORT_DIPSETTING(    0x80, DEF_STR( On ))
174175
175   PORT_START("DSW3")
176   PORT_DIPNAME( 0x03, 0x03, "Maximum Credits")
177   PORT_DIPSETTING(    0x00, "10")
178   PORT_DIPSETTING(    0x01, "15")
179   PORT_DIPSETTING(    0x02, "25")
180   PORT_DIPSETTING(    0x03, "40")
181   PORT_DIPNAME( 0x04, 0x04, "Credits displayed")
182   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
183   PORT_DIPSETTING(    0x04, DEF_STR( On ))
184   PORT_DIPNAME( 0x08, 0x08, "Match")
185   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
186   PORT_DIPSETTING(    0x08, DEF_STR( On ))
187   PORT_DIPNAME( 0x10, 0x00, "Keep all replays")
188   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
189   PORT_DIPSETTING(    0x10, DEF_STR( On ))
190   PORT_DIPNAME( 0x20, 0x00, "Voice" )
191   PORT_DIPSETTING(    0x00, DEF_STR( Off ))
192   PORT_DIPSETTING(    0x20, DEF_STR( On ))
193   PORT_DIPNAME( 0xC0, 0x40, "Balls")
194   PORT_DIPSETTING(    0xC0, "2")
195   PORT_DIPSETTING(    0x00, "3")
196   PORT_DIPSETTING(    0x80, "4")
197   PORT_DIPSETTING(    0x40, "5")
198
176   // Switches are numbered 8-1,16-9,24-17
199177   PORT_START("X0")
200   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER )
201   PORT_BIT( 0x0a, IP_ACTIVE_HIGH, IPT_UNUSED )
202   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START2 )
203   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER )
178   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_SLASH)
179   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_COLON)
180   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_QUOTE)
181   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSLASH)
182   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSPACE)
204183   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 )
205184   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_TILT )
206   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Outhole") PORT_CODE(KEYCODE_X)
185   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Z)
207186
208187   PORT_START("X1")
209   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN2 )
210   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN1 )
211   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN3 )
212   PORT_BIT( 0x38, IP_ACTIVE_HIGH, IPT_UNUSED )
213   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER )
188   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
189   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_MINUS)
190   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_EQUALS)
191   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_L)
192   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_OPENBRACE)
193   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_CLOSEBRACE)
194   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SERVICE2 ) PORT_NAME("Coin Door")
214195   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_TILT1 ) PORT_NAME("Slam Tilt")
215196
216   // from here, vary per game
217197   PORT_START("X2")
218198   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_A)
219199   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_S)
r31659r31660
235215   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_O)
236216
237217   PORT_START("X4")
238   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Z)
218   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Outhole") PORT_CODE(KEYCODE_X)
239219   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_C)
240220   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_V)
241221   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_B)
r31659r31660
253233WRITE8_MEMBER( hankin_state::ic10_a_w )
254234{
255235   m_ic10a = data;
256   //m_digit = 0xff;
257236
258237   if (!m_ic11_ca2)
259238   {
r31659r31660
279258   }
280259}
281260
261WRITE8_MEMBER( hankin_state::ic10_b_w )
262{
263   if (!m_ic10_cb2)
264   {
265      switch (data & 15)
266      {
267         case 0x0: // knocker
268            m_samples->start(0, 6);
269            break;
270         case 0x6: // outhole
271            m_samples->start(0, 5);
272            break;
273         case 0x8:
274         case 0x9:
275         case 0xa: // bumpers
276            m_samples->start(0, 0);
277            break;
278         case 0xb:
279         case 0xd: // slings
280            m_samples->start(0, 7);
281            break;
282      }
283   }
284   // also sound data
285}
286
282287WRITE_LINE_MEMBER( hankin_state::ic10_ca2_w )
283288{
284289   output_set_value("led0", !state);
290   // also sound strobe
285291}
286292
293WRITE_LINE_MEMBER( hankin_state::ic10_cb2_w )
294{
295   // solenoid strobe
296   m_ic10_cb2 = state;
297}
298
287299WRITE8_MEMBER( hankin_state::ic11_a_w )
288300{
289301   static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543
r31659r31660
348360   if (!state)
349361      m_counter = 0;
350362}
351     
363
364// lamp strobe
365WRITE_LINE_MEMBER( hankin_state::ic11_cb2_w )
366{
367}
368
352369// zero-cross detection
353370TIMER_DEVICE_CALLBACK_MEMBER( hankin_state::timer_x )
354371{
r31659r31660
385402   //MCFG_PIA_READPA_HANDLER(READ8(hankin_state, ic10_a_r))
386403   MCFG_PIA_WRITEPA_HANDLER(WRITE8(hankin_state, ic10_a_w))
387404   //MCFG_PIA_READPB_HANDLER(READ8(hankin_state, ic10_b_r))
388   //MCFG_PIA_WRITEPB_HANDLER(WRITE8(hankin_state, ic10_b_w))
405   MCFG_PIA_WRITEPB_HANDLER(WRITE8(hankin_state, ic10_b_w))
389406   MCFG_PIA_CA2_HANDLER(WRITELINE(hankin_state, ic10_ca2_w))
390   //MCFG_PIA_CB2_HANDLER(WRITELINE(hankin_state, ic10_cb2_w))
407   MCFG_PIA_CB2_HANDLER(WRITELINE(hankin_state, ic10_cb2_w))
391408   MCFG_PIA_IRQA_HANDLER(DEVWRITELINE("maincpu", m6802_cpu_device, irq_line))
392409   MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("maincpu", m6802_cpu_device, irq_line))
393410
r31659r31660
397414   MCFG_PIA_READPB_HANDLER(READ8(hankin_state, ic11_b_r))
398415   //MCFG_PIA_WRITEPB_HANDLER(WRITE8(hankin_state, ic11_b_w))
399416   MCFG_PIA_CA2_HANDLER(WRITELINE(hankin_state, ic11_ca2_w))
400   //MCFG_PIA_CB2_HANDLER(WRITELINE(hankin_state, ic11_cb2_w))
417   MCFG_PIA_CB2_HANDLER(WRITELINE(hankin_state, ic11_cb2_w))
401418   MCFG_PIA_IRQA_HANDLER(DEVWRITELINE("maincpu", m6802_cpu_device, irq_line))
402419   MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("maincpu", m6802_cpu_device, irq_line))
403420

Previous 199869 Revisions Next


© 1997-2024 The MAME Team