Previous 199869 Revisions Next

r36289 Friday 6th March, 2015 at 17:07:16 UTC by hap
elecbowl hardware is too complex to be in generic driver
[src/mess]mess.lst mess.mak
[src/mess/drivers]elecbowl.c* hh_tms1k.c

trunk/src/mess/drivers/elecbowl.c
r0r244801
1// license:BSD-3-Clause
2// copyright-holders:hap
3/***************************************************************************
4
5  Marx Series 300 Electronic Bowling Game
6  * TMS1100NLL MP3403 DBS 7836 SINGAPORE
7
8  10 lamps for bowling pins + 3 more bulbs, and 7segs for frame number and
9  scores. Board size is 10-12" by 6-8".
10
11  some clues:
12  - it's from 1978
13  - Merlin is MP3404, Amaze-A-Tron is MP3405, this one is MP3403
14  - it plays some short jingles (you need to be lucky with button mashing)
15
16***************************************************************************/
17
18#include "emu.h"
19#include "cpu/tms0980/tms0980.h"
20#include "sound/speaker.h"
21
22// internal artwork
23#include "elecbowl.lh"
24
25
26class elecbowl_state : public driver_device
27{
28public:
29   elecbowl_state(const machine_config &mconfig, device_type type, const char *tag)
30      : driver_device(mconfig, type, tag),
31      m_maincpu(*this, "maincpu"),
32      m_inp_matrix(*this, "IN"),
33      m_speaker(*this, "speaker")
34   { }
35
36   // devices
37   required_device<cpu_device> m_maincpu;
38   required_ioport_array<4> m_inp_matrix;
39   required_device<speaker_sound_device> m_speaker;
40   
41   UINT16 m_r;
42   UINT16 m_o;
43   UINT16 m_inp_mux;
44
45   DECLARE_READ8_MEMBER(read_k);
46   DECLARE_WRITE16_MEMBER(write_r);
47   DECLARE_WRITE16_MEMBER(write_o);
48
49   virtual void machine_start();
50};
51
52
53
54/***************************************************************************
55
56  I/O
57
58***************************************************************************/
59
60READ8_MEMBER(elecbowl_state::read_k)
61{
62   UINT8 k = 0;
63
64   // read selected input rows
65   for (int i = 0; i < 4; i++)
66      if (m_inp_mux >> i & 1)
67         k |= m_inp_matrix[i]->read();
68
69   return k;
70}
71
72WRITE16_MEMBER(elecbowl_state::write_r)
73{
74   // R4-R7: input mux
75   m_inp_mux = data >> 4 & 0xf;
76
77   // R9: speaker out
78   m_speaker->level_w(data >> 9 & 1);
79
80   // R10: maybe a switch or other button row?
81   // others: ?
82}
83
84WRITE16_MEMBER(elecbowl_state::write_o)
85{
86   // ?
87}
88
89
90
91/***************************************************************************
92
93  Inputs
94
95***************************************************************************/
96
97static INPUT_PORTS_START( elecbowl )
98   PORT_START("IN.0") // R4
99   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1)
100   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2)
101   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3)
102   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4)
103
104   PORT_START("IN.1") // R5
105   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q)
106   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W)
107   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E)
108   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R)
109
110   PORT_START("IN.2") // R6
111   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A)
112   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_S)
113   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_D)
114   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) // reset/newgame?
115
116   PORT_START("IN.3") // R7
117   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z)
118   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_X)
119   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_C)
120   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_V)
121INPUT_PORTS_END
122
123
124
125/***************************************************************************
126
127  Machine Config
128
129***************************************************************************/
130
131void elecbowl_state::machine_start()
132{
133   // zerofill
134   m_o = 0;
135   m_r = 0;
136   m_inp_mux = 0;
137
138   // register for savestates
139   save_item(NAME(m_o));
140   save_item(NAME(m_r));
141   save_item(NAME(m_inp_mux));
142}
143
144
145static const UINT16 elecbowl_output_pla[0x20] =
146{
147   /* O output PLA configuration currently unknown */
148   0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
149   0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
150   0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
151   0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
152};
153
154static MACHINE_CONFIG_START( elecbowl, elecbowl_state )
155
156   /* basic machine hardware */
157   MCFG_CPU_ADD("maincpu", TMS1100, 300000) // approximation - unknown freq
158   MCFG_TMS1XXX_OUTPUT_PLA(elecbowl_output_pla)
159   MCFG_TMS1XXX_READ_K_CB(READ8(elecbowl_state, read_k))
160   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(elecbowl_state, write_r))
161   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(elecbowl_state, write_o))
162
163   MCFG_DEFAULT_LAYOUT(layout_elecbowl)
164
165   /* no video! */
166
167   /* sound hardware */
168   MCFG_SPEAKER_STANDARD_MONO("mono")
169   MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
170   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
171MACHINE_CONFIG_END
172
173
174
175/***************************************************************************
176
177  Game driver(s)
178
179***************************************************************************/
180
181ROM_START( elecbowl )
182   ROM_REGION( 0x0800, "maincpu", 0 )
183   ROM_LOAD( "mp3403", 0x0000, 0x0800, CRC(9eabaa7d) SHA1(b1f54587ed7f2bbf3a5d49075c807296384c2b06) )
184
185   ROM_REGION( 867, "maincpu:mpla", 0 )
186   ROM_LOAD( "tms1100_default_mpla.pla", 0, 867, BAD_DUMP CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) // not verified
187   ROM_REGION( 365, "maincpu:opla", 0 )
188   ROM_LOAD( "tms1100_elecbowl_opla.pla", 0, 365, NO_DUMP )
189ROM_END
190
191
192CONS( 1978, elecbowl, 0, 0, elecbowl, elecbowl, driver_device, 0, "Marx", "Electronic Bowling", GAME_SUPPORTS_SAVE | GAME_MECHANICAL | GAME_NOT_WORKING )
trunk/src/mess/drivers/hh_tms1k.c
r244800r244801
1616 @MP0914   TMS1000  1978, Entex Baseball 1
1717 @MP1030   TMS1100  1980, APF Mathemagician
1818 @MP3226   TMS1000  1978, Milton Bradley Simon
19 @MP3403   TMS1100  1978, Marx Electronic Bowling
19  MP3403   TMS1100  1978, Marx Electronic Bowling
2020 @MP3404   TMS1100  1978, Parker Brothers Merlin
2121 @MP3405   TMS1100  1979, Coleco Amaze-A-Tron
2222 @MP3438A  TMS1100  1979, Kenner Star Wars Electronic Battle Command
r244800r244801
6868#include "bankshot.lh"
6969#include "cnsector.lh"
7070#include "ebball.lh"
71#include "elecbowl.lh"
7271#include "elecdet.lh"
7372#include "comp4.lh"
7473#include "mathmagi.lh"
r244800r244801
156155   DECLARE_WRITE16_MEMBER(starwbc_write_r);
157156   DECLARE_WRITE16_MEMBER(starwbc_write_o);
158157
159   DECLARE_READ8_MEMBER(elecbowl_read_k);
160   DECLARE_WRITE16_MEMBER(elecbowl_write_r);
161   DECLARE_WRITE16_MEMBER(elecbowl_write_o);
162
163158   DECLARE_READ8_MEMBER(comp4_read_k);
164159   DECLARE_WRITE16_MEMBER(comp4_write_r);
165160   DECLARE_WRITE16_MEMBER(comp4_write_o);
r244800r244801
11481143
11491144/***************************************************************************
11501145
1151  Marx Series 300 Electronic Bowling Game
1152  * TMS1100NLL MP3403 DBS 7836 SINGAPORE
1153
1154  10 lamps for bowling pins + 3 more bulbs, and 7segs for frame number and
1155  scores. Board size is 10-12" by 6-8".
1156
1157  some clues:
1158  - it's from 1978
1159  - Merlin is MP3404, Amaze-A-Tron is MP3405, this one is MP3403
1160  - it plays some short jingles (you need to be lucky with button mashing)
1161
1162***************************************************************************/
1163
1164READ8_MEMBER(hh_tms1k_state::elecbowl_read_k)
1165{
1166   return read_inputs(4);
1167}
1168
1169WRITE16_MEMBER(hh_tms1k_state::elecbowl_write_r)
1170{
1171   // R4-R7: input mux
1172   m_inp_mux = data >> 4 & 0xf;
1173
1174   // R9: speaker out
1175   m_speaker->level_w(data >> 9 & 1);
1176
1177   // R10: maybe a switch or other button row?
1178   // others: ?
1179}
1180
1181WRITE16_MEMBER(hh_tms1k_state::elecbowl_write_o)
1182{
1183   // ?
1184}
1185
1186static INPUT_PORTS_START( elecbowl )
1187   PORT_START("IN.0") // R4
1188   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1)
1189   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2)
1190   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3)
1191   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4)
1192
1193   PORT_START("IN.1") // R5
1194   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q)
1195   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W)
1196   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E)
1197   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R)
1198
1199   PORT_START("IN.2") // R6
1200   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A)
1201   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_S)
1202   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_D)
1203   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) // reset/newgame?
1204
1205   PORT_START("IN.3") // R7
1206   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z)
1207   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_X)
1208   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_C)
1209   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_V)
1210INPUT_PORTS_END
1211
1212
1213static const UINT16 elecbowl_output_pla[0x20] =
1214{
1215   /* O output PLA configuration currently unknown */
1216   0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1217   0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
1218   0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
1219   0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
1220};
1221
1222static MACHINE_CONFIG_START( elecbowl, hh_tms1k_state )
1223
1224   /* basic machine hardware */
1225   MCFG_CPU_ADD("maincpu", TMS1100, 300000) // approximation - unknown freq
1226   MCFG_TMS1XXX_OUTPUT_PLA(elecbowl_output_pla)
1227   MCFG_TMS1XXX_READ_K_CB(READ8(hh_tms1k_state, elecbowl_read_k))
1228   MCFG_TMS1XXX_WRITE_R_CB(WRITE16(hh_tms1k_state, elecbowl_write_r))
1229   MCFG_TMS1XXX_WRITE_O_CB(WRITE16(hh_tms1k_state, elecbowl_write_o))
1230
1231   /* no video! */
1232
1233   /* sound hardware */
1234   MCFG_SPEAKER_STANDARD_MONO("mono")
1235   MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
1236   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
1237MACHINE_CONFIG_END
1238
1239
1240
1241
1242
1243/***************************************************************************
1244
12451146  Milton Bradley Comp IV
12461147  * TMC0904NL CP0904A (die labeled 4A0970D-04A)
12471148
r244800r244801
21382039ROM_END
21392040
21402041
2141ROM_START( elecbowl )
2142   ROM_REGION( 0x0800, "maincpu", 0 )
2143   ROM_LOAD( "mp3403", 0x0000, 0x0800, CRC(9eabaa7d) SHA1(b1f54587ed7f2bbf3a5d49075c807296384c2b06) )
2144
2145   ROM_REGION( 867, "maincpu:mpla", 0 )
2146   ROM_LOAD( "tms1100_default_mpla.pla", 0, 867, BAD_DUMP CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) // not verified
2147   ROM_REGION( 365, "maincpu:opla", 0 )
2148   ROM_LOAD( "tms1100_elecbowl_opla.pla", 0, 365, NO_DUMP )
2149ROM_END
2150
2151
21522042ROM_START( comp4 )
21532043   ROM_REGION( 0x0400, "maincpu", 0 )
21542044   ROM_LOAD( "tmc0904nl_cp0904a", 0x0000, 0x0400, CRC(6233ee1b) SHA1(738e109b38c97804b4ec52bed80b00a8634ad453) )
r244800r244801
22772167CONS( 1979, starwbc,   0,        0, starwbc,   starwbc,   driver_device, 0, "Kenner", "Star Wars - Electronic Battle Command", GAME_SUPPORTS_SAVE )
22782168CONS( 1979, starwbcp,  starwbc,  0, starwbc,   starwbc,   driver_device, 0, "Kenner", "Star Wars - Electronic Battle Command (prototype)", GAME_SUPPORTS_SAVE )
22792169
2280CONS( 1978, elecbowl,  0,        0, elecbowl,  elecbowl,  driver_device, 0, "Marx", "Electronic Bowling", GAME_SUPPORTS_SAVE | GAME_MECHANICAL | GAME_NOT_WORKING )
2281
22822170CONS( 1977, comp4,     0,        0, comp4,     comp4,     driver_device, 0, "Milton Bradley", "Comp IV", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
22832171CONS( 1978, simon,     0,        0, simon,     simon,     driver_device, 0, "Milton Bradley", "Simon (Rev. A)", GAME_SUPPORTS_SAVE )
22842172
trunk/src/mess/mess.lst
r244800r244801
21852185elecdet     // Ideal
21862186starwbc     // Kenner
21872187starwbcp    // Kenner (prototype)
2188elecbowl    // Marx
21892188comp4       // Milton Bradley
21902189simon       // Milton Bradley
21912190cnsector    // Parker Bros
r244800r244801
22012200tmtennis    // Tomy
22022201alnchase    // Tomy
22032202
2203elecbowl    // Marx
22042204wildfire    // Parker Bros
22052205
22062206
trunk/src/mess/mess.mak
r244800r244801
748748   $(MESSOBJ)/luxor.a \
749749   $(MESSOBJ)/magnavox.a \
750750   $(MESSOBJ)/makerbot.a \
751   $(MESSOBJ)/marx.a \
751752   $(MESSOBJ)/matsushi.a \
752753   $(MESSOBJ)/mattel.a \
753754   $(MESSOBJ)/mb.a \
r244800r244801
13681369$(MESSOBJ)/makerbot.a:          \
13691370   $(MESS_DRIVERS)/replicator.o\
13701371
1372$(MESSOBJ)/marx.a:              \
1373   $(MESS_DRIVERS)/elecbowl.o  \
1374
13711375$(MESSOBJ)/mattel.a:            \
13721376   $(MESS_DRIVERS)/aquarius.o $(MESS_VIDEO)/aquarius.o \
13731377   $(MESS_DRIVERS)/juicebox.o  \
r244800r244801
21142118$(MESS_DRIVERS)/dmv.o:      $(MESS_LAYOUT)/dmv.lh
21152119$(MESS_DRIVERS)/dolphunk.o: $(MESS_LAYOUT)/dolphunk.lh
21162120$(MESS_DRIVERS)/eacc.o:     $(MESS_LAYOUT)/eacc.lh
2121$(MESS_DRIVERS)/elecbowl.o: $(MESS_LAYOUT)/elecbowl.lh
21172122$(MESS_DRIVERS)/elekscmp.o: $(MESS_LAYOUT)/elekscmp.lh
21182123$(MESS_DRIVERS)/elf.o:      $(MESS_LAYOUT)/elf2.lh
21192124$(MESS_MACHINE)/esqvfd.o:   $(MESS_LAYOUT)/esq2by40.lh \
r244800r244801
21342139                            $(MESS_LAYOUT)/cnsector.lh \
21352140                            $(MESS_LAYOUT)/comp4.lh \
21362141                            $(MESS_LAYOUT)/ebball.lh \
2137                            $(MESS_LAYOUT)/elecbowl.lh \
21382142                            $(MESS_LAYOUT)/elecdet.lh \
21392143                            $(MESS_LAYOUT)/mathmagi.lh \
21402144                            $(MESS_LAYOUT)/merlin.lh \


Previous 199869 Revisions Next


© 1997-2024 The MAME Team