trunk/src/mess/drivers/hh_tms1k.c
r244751 | r244752 | |
16 | 16 | @MP0914 TMS1000 1978, Entex Baseball 1 |
17 | 17 | @MP1030 TMS1100 1980, APF Mathemagician |
18 | 18 | @MP3226 TMS1000 1978, Milton Bradley Simon |
19 | | @MP3403 TMS1100 1978, unknown |
| 19 | @MP3403 TMS1100 1978, Marx Electronic Bowling |
20 | 20 | @MP3404 TMS1100 1978, Parker Brothers Merlin |
21 | 21 | @MP3405 TMS1100 1979, Coleco Amaze-A-Tron |
22 | 22 | @MP3438A TMS1100 1979, Kenner Star Wars Electronic Battle Command |
r244751 | r244752 | |
68 | 68 | #include "bankshot.lh" |
69 | 69 | #include "cnsector.lh" |
70 | 70 | #include "ebball.lh" |
| 71 | #include "elecbowl.lh" |
71 | 72 | #include "elecdet.lh" |
72 | 73 | #include "comp4.lh" |
73 | 74 | #include "mathmagi.lh" |
r244751 | r244752 | |
155 | 156 | DECLARE_WRITE16_MEMBER(starwbc_write_r); |
156 | 157 | DECLARE_WRITE16_MEMBER(starwbc_write_o); |
157 | 158 | |
| 159 | DECLARE_READ8_MEMBER(elecbowl_read_k); |
| 160 | DECLARE_WRITE16_MEMBER(elecbowl_write_r); |
| 161 | DECLARE_WRITE16_MEMBER(elecbowl_write_o); |
| 162 | |
158 | 163 | DECLARE_READ8_MEMBER(comp4_read_k); |
159 | 164 | DECLARE_WRITE16_MEMBER(comp4_write_r); |
160 | 165 | DECLARE_WRITE16_MEMBER(comp4_write_o); |
r244751 | r244752 | |
187 | 192 | DECLARE_READ8_MEMBER(tandy12_read_k); |
188 | 193 | DECLARE_WRITE16_MEMBER(tandy12_write_r); |
189 | 194 | DECLARE_WRITE16_MEMBER(tandy12_write_o); |
190 | | |
191 | | DECLARE_READ8_MEMBER(unk3403_read_k); |
192 | | DECLARE_WRITE16_MEMBER(unk3403_write_r); |
193 | | DECLARE_WRITE16_MEMBER(unk3403_write_o); |
194 | 195 | }; |
195 | 196 | |
196 | 197 | |
r244751 | r244752 | |
1147 | 1148 | |
1148 | 1149 | /*************************************************************************** |
1149 | 1150 | |
| 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 | |
| 1164 | READ8_MEMBER(hh_tms1k_state::elecbowl_read_k) |
| 1165 | { |
| 1166 | return read_inputs(4); |
| 1167 | } |
| 1168 | |
| 1169 | WRITE16_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 | |
| 1181 | WRITE16_MEMBER(hh_tms1k_state::elecbowl_write_o) |
| 1182 | { |
| 1183 | // ? |
| 1184 | } |
| 1185 | |
| 1186 | static 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) |
| 1210 | INPUT_PORTS_END |
| 1211 | |
| 1212 | |
| 1213 | static 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 | |
| 1222 | static 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) |
| 1237 | MACHINE_CONFIG_END |
| 1238 | |
| 1239 | |
| 1240 | |
| 1241 | |
| 1242 | |
| 1243 | /*************************************************************************** |
| 1244 | |
1150 | 1245 | Milton Bradley Comp IV |
1151 | 1246 | * TMC0904NL CP0904A (die labeled 4A0970D-04A) |
1152 | 1247 | |
r244751 | r244752 | |
1959 | 2054 | |
1960 | 2055 | /*************************************************************************** |
1961 | 2056 | |
1962 | | TMS1100NLL MP3403 DBS 7836 SINGAPORE some game board with 7-segs. |
1963 | | |
1964 | | What old electronic game is this? Board layout proves it's a bowling game, |
1965 | | 10 lamps for bowling pins + 3 more bulbs, and 7segs for frame number and |
1966 | | scores. Board size is 10-12" by 6-8". |
1967 | | |
1968 | | some clues: |
1969 | | - it's from 1978 |
1970 | | - Merlin is MP3404, Amaze-A-Tron is MP3405, this one is MP3403 |
1971 | | - it plays some short jingles (you need to be lucky with button mashing) |
1972 | | |
1973 | | ***************************************************************************/ |
1974 | | |
1975 | | READ8_MEMBER(hh_tms1k_state::unk3403_read_k) |
1976 | | { |
1977 | | return read_inputs(4); |
1978 | | } |
1979 | | |
1980 | | WRITE16_MEMBER(hh_tms1k_state::unk3403_write_r) |
1981 | | { |
1982 | | // R4-R7: input mux |
1983 | | m_inp_mux = data >> 4 & 0xf; |
1984 | | |
1985 | | // R9: speaker out |
1986 | | m_speaker->level_w(data >> 9 & 1); |
1987 | | |
1988 | | // R10: maybe a switch or other button row? |
1989 | | // others: ? |
1990 | | } |
1991 | | |
1992 | | WRITE16_MEMBER(hh_tms1k_state::unk3403_write_o) |
1993 | | { |
1994 | | // ? |
1995 | | } |
1996 | | |
1997 | | static INPUT_PORTS_START( unk3403 ) |
1998 | | PORT_START("IN.0") // R4 |
1999 | | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) |
2000 | | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) |
2001 | | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) |
2002 | | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) |
2003 | | |
2004 | | PORT_START("IN.1") // R5 |
2005 | | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) |
2006 | | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) |
2007 | | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) |
2008 | | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) |
2009 | | |
2010 | | PORT_START("IN.2") // R6 |
2011 | | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) |
2012 | | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_S) |
2013 | | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_D) |
2014 | | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) // reset/newgame? |
2015 | | |
2016 | | PORT_START("IN.3") // R7 |
2017 | | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) |
2018 | | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) |
2019 | | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) |
2020 | | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) |
2021 | | INPUT_PORTS_END |
2022 | | |
2023 | | |
2024 | | static const UINT16 unk3403_output_pla[0x20] = |
2025 | | { |
2026 | | /* O output PLA configuration currently unknown */ |
2027 | | 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, |
2028 | | 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, |
2029 | | 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, |
2030 | | 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f |
2031 | | }; |
2032 | | |
2033 | | static MACHINE_CONFIG_START( unk3403, hh_tms1k_state ) |
2034 | | |
2035 | | /* basic machine hardware */ |
2036 | | MCFG_CPU_ADD("maincpu", TMS1100, 350000) // approximation - unknown freq |
2037 | | MCFG_TMS1XXX_OUTPUT_PLA(unk3403_output_pla) |
2038 | | MCFG_TMS1XXX_READ_K_CB(READ8(hh_tms1k_state, unk3403_read_k)) |
2039 | | MCFG_TMS1XXX_WRITE_R_CB(WRITE16(hh_tms1k_state, unk3403_write_r)) |
2040 | | MCFG_TMS1XXX_WRITE_O_CB(WRITE16(hh_tms1k_state, unk3403_write_o)) |
2041 | | |
2042 | | /* no video! */ |
2043 | | |
2044 | | /* sound hardware */ |
2045 | | MCFG_SPEAKER_STANDARD_MONO("mono") |
2046 | | MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) |
2047 | | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
2048 | | MACHINE_CONFIG_END |
2049 | | |
2050 | | |
2051 | | |
2052 | | |
2053 | | |
2054 | | /*************************************************************************** |
2055 | | |
2056 | 2057 | Game driver(s) |
2057 | 2058 | |
2058 | 2059 | ***************************************************************************/ |
r244751 | r244752 | |
2137 | 2138 | ROM_END |
2138 | 2139 | |
2139 | 2140 | |
| 2141 | ROM_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 ) |
| 2149 | ROM_END |
| 2150 | |
| 2151 | |
2140 | 2152 | ROM_START( comp4 ) |
2141 | 2153 | ROM_REGION( 0x0400, "maincpu", 0 ) |
2142 | 2154 | ROM_LOAD( "tmc0904nl_cp0904a", 0x0000, 0x0400, CRC(6233ee1b) SHA1(738e109b38c97804b4ec52bed80b00a8634ad453) ) |
r244751 | r244752 | |
2251 | 2263 | ROM_END |
2252 | 2264 | |
2253 | 2265 | |
2254 | | ROM_START( unk3403 ) |
2255 | | ROM_REGION( 0x0800, "maincpu", 0 ) |
2256 | | ROM_LOAD( "mp3403", 0x0000, 0x0800, CRC(9eabaa7d) SHA1(b1f54587ed7f2bbf3a5d49075c807296384c2b06) ) |
2257 | 2266 | |
2258 | | ROM_REGION( 867, "maincpu:mpla", 0 ) |
2259 | | ROM_LOAD( "tms1100_default_mpla.pla", 0, 867, BAD_DUMP CRC(62445fc9) SHA1(d6297f2a4bc7a870b76cc498d19dbb0ce7d69fec) ) // not verified |
2260 | | ROM_REGION( 365, "maincpu:opla", 0 ) |
2261 | | ROM_LOAD( "tms1100_xxx_opla.pla", 0, 365, NO_DUMP ) |
2262 | | ROM_END |
2263 | | |
2264 | | |
2265 | | |
2266 | 2267 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */ |
2267 | 2268 | CONS( 1980, mathmagi, 0, 0, mathmagi, mathmagi, driver_device, 0, "APF Electronics Inc.", "Mathemagician", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW ) |
2268 | 2269 | |
r244751 | r244752 | |
2276 | 2277 | CONS( 1979, starwbc, 0, 0, starwbc, starwbc, driver_device, 0, "Kenner", "Star Wars - Electronic Battle Command", GAME_SUPPORTS_SAVE ) |
2277 | 2278 | CONS( 1979, starwbcp, starwbc, 0, starwbc, starwbc, driver_device, 0, "Kenner", "Star Wars - Electronic Battle Command (prototype)", GAME_SUPPORTS_SAVE ) |
2278 | 2279 | |
| 2280 | CONS( 1978, elecbowl, 0, 0, elecbowl, elecbowl, driver_device, 0, "Marx", "Electronic Bowling", GAME_SUPPORTS_SAVE | GAME_MECHANICAL | GAME_NOT_WORKING ) |
| 2281 | |
2279 | 2282 | CONS( 1977, comp4, 0, 0, comp4, comp4, driver_device, 0, "Milton Bradley", "Comp IV", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW ) |
2280 | 2283 | CONS( 1978, simon, 0, 0, simon, simon, driver_device, 0, "Milton Bradley", "Simon (Rev. A)", GAME_SUPPORTS_SAVE ) |
2281 | 2284 | |
r244751 | r244752 | |
2287 | 2290 | CONS( 1980, splitsec, 0, 0, splitsec, splitsec, driver_device, 0, "Parker Brothers", "Split Second", GAME_SUPPORTS_SAVE ) |
2288 | 2291 | |
2289 | 2292 | CONS( 1981, tandy12, 0, 0, tandy12, tandy12, driver_device, 0, "Tandy Radio Shack", "Tandy-12: Computerized Arcade", GAME_SUPPORTS_SAVE ) // partially unplayable without cards/dice/.. |
2290 | | |
2291 | | CONS( 1978, unk3403, 0, 0, unk3403, unk3403, driver_device, 0, "<unknown>", "unknown TMS1100 electronic bowling game", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING ) |