Previous 199869 Revisions Next

r34932 Sunday 8th February, 2015 at 20:51:07 UTC by hap
added Parker Bros bankshot to splitsec.c (preliminary)
[src/mess]mess.lst mess.mak
[src/mess/drivers]splitsec.c
[src/mess/layout]bankshot.lay*

trunk/src/mess/drivers/splitsec.c
r243443r243444
1616  *: higher number indicates higher difficulty
1717
1818
19  TODO:
20  - MCU clock is unknown
19****************************************************************************
2120
21  Parker Brothers Bank Shot (also released in other regions as Cue Ball)
22  * TMS1400NLL MP7313-N2 (die labeled MP7313)
23 
24  x
25
26
2227***************************************************************************/
2328
2429#include "emu.h"
r243443r243444
2631#include "sound/speaker.h"
2732
2833#include "splitsec.lh"
34#include "bankshot.lh"
2935
3036// The master clock is a single stage RC oscillator: R=24K, C=100pf,
3137// according to the TMS 1000 series data manual this is around 375kHz.
r243443r243444
3339// to recordings, maybe the RC osc curve is different for TMS1400?
3440
3541// so for now, the value below is an approximation
36#define MASTER_CLOCK (485000)
42#define MASTER_CLOCK (475000)
3743
3844
3945class splitsec_state : public driver_device
r243443r243444
5056   required_ioport_array<2> m_button_matrix;
5157   required_device<speaker_sound_device> m_speaker;
5258
59   UINT8 m_input_mux;
5360   UINT16 m_r;
5461   UINT16 m_o;
5562
r243443r243444
5966
6067   DECLARE_READ8_MEMBER(read_k);
6168   DECLARE_WRITE16_MEMBER(write_o);
62   DECLARE_WRITE16_MEMBER(write_r);
69   DECLARE_WRITE16_MEMBER(splitsec_write_r);
70   DECLARE_WRITE16_MEMBER(bankshot_write_r);
6371
6472   TIMER_DEVICE_CALLBACK_MEMBER(leds_decay_tick);
6573   void leds_update();
r243443r243444
8391
8492/* display layout, where number xy is lamp R(x),O(y)
8593
94  Split Second:
95
8696       00    02    04
8797    10 01 12 03 14 05 16
8898       11    13    15
r243443r243444
94104       71    73    75
95105    50 60 52 62 54 64 56
96106       70    72    74
107
108
109  Bank Shot:
110
111x
112
97113*/
98114
99115void splitsec_state::leds_update()
r243443r243444
156172
157173   // read selected button rows
158174   for (int i = 0; i < 2; i++)
159      if (m_r >> (i+9) & 1)
175      if (m_input_mux >> i & 1)
160176         k |= m_button_matrix[i]->read();
161177
162178   return k;
163179}
164180
165WRITE16_MEMBER(splitsec_state::write_r)
181WRITE16_MEMBER(splitsec_state::write_o)
166182{
183   // O0-O6: led rows
184   // O7: N/C
185   m_o = data;
186   leds_update();
187}
188
189WRITE16_MEMBER(splitsec_state::splitsec_write_r)
190{
167191   // R8: speaker out
168192   m_speaker->level_w(data >> 8 & 1);
169193
170194   // R9,R10: input mux
195   m_input_mux = data >> 9 & 3;
196   
171197   // R0-R7: led columns
172   m_r = data;
198   m_r = data & 0xff;
173199   leds_update();
174200}
175201
176WRITE16_MEMBER(splitsec_state::write_o)
202WRITE16_MEMBER(splitsec_state::bankshot_write_r)
177203{
178   // O0-O6: led rows
179   // O7: N/C
180   m_o = data;
204   // R0: speaker out
205   m_speaker->level_w(data & 1);
206
207   // R2,R3: input mux
208   m_input_mux = data >> 2 & 3;
209   
210   // R2-R10: led columns
211   m_r = data & ~3;
181212   leds_update();
182213}
183214
r243443r243444
203234   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
204235INPUT_PORTS_END
205236
237static INPUT_PORTS_START( bankshot )
238   PORT_START("IN.0") // R2
239   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 )
240   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 )
241   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 )
242   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
206243
244   PORT_START("IN.1") // R3
245   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON4 )
246   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON5 )
247   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON6 )
248   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
249INPUT_PORTS_END
207250
251
252
208253/***************************************************************************
209254
210255  Machine Config
r243443r243444
218263   memset(m_leds_cache, 0, sizeof(m_leds_cache));
219264   memset(m_leds_decay, 0, sizeof(m_leds_decay));
220265
266   m_input_mux = 0;
221267   m_r = 0;
222268   m_o = 0;
223269
r243443r243444
226272   save_item(NAME(m_leds_cache));
227273   save_item(NAME(m_leds_decay));
228274
275   save_item(NAME(m_input_mux));
229276   save_item(NAME(m_r));
230277   save_item(NAME(m_o));
231278}
r243443r243444
237284   MCFG_CPU_ADD("maincpu", TMS1400, MASTER_CLOCK)
238285   MCFG_TMS1XXX_READ_K_CB(READ8(splitsec_state, read_k))
239286   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(splitsec_state, write_o))
240   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(splitsec_state, write_r))
287   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(splitsec_state, splitsec_write_r))
241288
242289   MCFG_TIMER_DRIVER_ADD_PERIODIC("leds_decay", splitsec_state, leds_decay_tick, attotime::from_msec(10))
243290
r243443r243444
251298   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
252299MACHINE_CONFIG_END
253300
301static MACHINE_CONFIG_DERIVED( bankshot, splitsec )
254302
303   /* basic machine hardware */
304   MCFG_CPU_MODIFY("maincpu")
305   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(splitsec_state, bankshot_write_r))
255306
307   MCFG_DEFAULT_LAYOUT(layout_bankshot)
308MACHINE_CONFIG_END
309
310
311
256312/***************************************************************************
257313
258314  Game driver(s)
r243443r243444
269325   ROM_LOAD( "tms1400_splitsec_opla.pla", 0, 557, CRC(7539283b) SHA1(f791fa98259fc10c393ff1961d4c93040f1a2932) )
270326ROM_END
271327
328ROM_START( bankshot )
329   ROM_REGION( 0x1000, "maincpu", 0 )
330   ROM_LOAD( "tms1400nll_mp7313", 0x0000, 0x1000, CRC(7a5016a9) SHA1(a8730dc8a282ffaa3d89e675f371d43eb39f39b4) )
272331
332   ROM_REGION( 867, "maincpu:mpla", 0 )
333   ROM_LOAD( "tms1100_default_mpla.pla", 0, 867, CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) )
334   ROM_REGION( 557, "maincpu:opla", 0 )
335   ROM_LOAD( "tms1400_bankshot_opla.pla", 0, 557, CRC(7539283b) SHA1(f791fa98259fc10c393ff1961d4c93040f1a2932) )
336ROM_END
337
338
273339CONS( 1980, splitsec, 0, 0, splitsec, splitsec, driver_device, 0, "Parker Brothers", "Split Second", GAME_SUPPORTS_SAVE )
340CONS( 1980, bankshot, 0, 0, bankshot, bankshot, driver_device, 0, "Parker Brothers", "Bank Shot - Electronic Pool", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
trunk/src/mess/layout/bankshot.lay
r0r243444
1<?xml version="1.0"?>
2<mamelayout version="2">
3
4<!-- define elements -->
5
6   <element name="static_black"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element>
7
8   <element name="led" defstate="0">
9      <disk state="1"><color red="1.0" green="0.24" blue="0.26" /></disk>
10      <disk state="0"><color red="0.15" green="0.043" blue="0.047" /></disk>
11   </element>
12
13
14<!-- build screen -->
15
16   <view name="Internal Layout">
17      <bounds left="0" right="100" top="0" bottom="100" />
18      <bezel element="static_black">
19         <bounds left="0" right="100" top="0" bottom="100" />
20      </bezel>
21
22
23   </view>
24</mamelayout>
trunk/src/mess/mess.lst
r243443r243444
22762276stopthie
22772277stopthiep
22782278splitsec
2279bankshot
22792280amico2k
22802281jtc
22812282jtces88
trunk/src/mess/mess.mak
r243443r243444
21902190$(MESS_DRIVERS)/sitcom.o:   $(MESS_LAYOUT)/sitcom.lh
21912191$(MESS_DRIVERS)/slc1.o:     $(MESS_LAYOUT)/slc1.lh
21922192$(MESS_DRIVERS)/sms.o:      $(MESS_LAYOUT)/sms1.lh
2193$(MESS_DRIVERS)/splitsec.o: $(MESS_LAYOUT)/splitsec.lh
2193$(MESS_DRIVERS)/splitsec.o: $(MESS_LAYOUT)/bankshot.lh \
2194                     $(MESS_LAYOUT)/splitsec.lh
21942195$(MESS_DRIVERS)/starwbc.o:  $(MESS_LAYOUT)/starwbc.lh
21952196$(MESS_DRIVERS)/stopthie.o: $(MESS_LAYOUT)/stopthie.lh
21962197$(MESS_DRIVERS)/super80.o:  $(MESS_LAYOUT)/super80.lh


Previous 199869 Revisions Next


© 1997-2024 The MAME Team