trunk/src/mess/drivers/hh_tms1k.c
| r244683 | r244684 | |
| 46 | 46 | |
| 47 | 47 | (* denotes not yet emulated by MESS, @ denotes it's in this driver) |
| 48 | 48 | |
| 49 | |
| 50 | TODO: |
| 51 | - verify output PLA and microinstructions PLA for MCUs that have been dumped |
| 52 | electronically (mpla is usually the default, opla is often custom) |
| 53 | - unknown MCU clocks for some |
| 54 | - some of the games rely on the fact that faster(longer) strobed leds appear |
| 55 | brighter: tc4(offensive players), bankshot(cue ball) |
| 56 | - add softwarelist for tc4 cartridges? |
| 57 | - stopthiep: unable to start a game (may be intentional?) |
| 58 | |
| 49 | 59 | ***************************************************************************/ |
| 50 | 60 | |
| 51 | 61 | #include "emu.h" |
| r244683 | r244684 | |
| 243 | 253 | // The device strobes the outputs very fast, it is unnoticeable to the user. |
| 244 | 254 | // To prevent flickering here, we need to simulate a decay. |
| 245 | 255 | |
| 246 | | |
| 247 | 256 | void hh_tms1k_state::display_update() |
| 248 | 257 | { |
| 249 | 258 | UINT32 active_state[0x20]; |
| r244683 | r244684 | |
| 362 | 371 | 5) Football |
| 363 | 372 | 6) Lunar Lander |
| 364 | 373 | |
| 365 | | |
| 366 | | TODO: |
| 367 | | - some of the led symbols are probably wrong, output PLA is unknown |
| 368 | | - microinstructions PLA is not verified |
| 369 | | |
| 370 | 374 | ***************************************************************************/ |
| 371 | 375 | |
| 372 | 376 | void hh_tms1k_state::mathmagi_display() |
| r244683 | r244684 | |
| 532 | 536 | |
| 533 | 537 | ***************************************************************************/ |
| 534 | 538 | |
| 535 | | |
| 536 | 539 | void hh_tms1k_state::amaztron_display() |
| 537 | 540 | { |
| 538 | 541 | m_display_maxx = 8; |
| r244683 | r244684 | |
| 649 | 652 | |
| 650 | 653 | |
| 651 | 654 | |
| 655 | |
| 652 | 656 | /*************************************************************************** |
| 653 | 657 | |
| 654 | 658 | Coleco Total Control 4 |
| r244683 | r244684 | |
| 678 | 682 | - Soccer (K2?) |
| 679 | 683 | - Basketball (K1?) |
| 680 | 684 | |
| 681 | | |
| 682 | | TODO: |
| 683 | | - pin configuration of other carts is guessed |
| 684 | | - softlist for the cartridges? |
| 685 | | - offsensive players leds are supposed to look brighter |
| 686 | | - MCU clock is unknown |
| 687 | | |
| 688 | 685 | ***************************************************************************/ |
| 689 | 686 | |
| 690 | 687 | void hh_tms1k_state::tc4_display() |
| r244683 | r244684 | |
| 779 | 776 | PORT_CONFSETTING( 0x08, "Football" ) |
| 780 | 777 | INPUT_PORTS_END |
| 781 | 778 | |
| 779 | |
| 782 | 780 | static MACHINE_CONFIG_START( tc4, hh_tms1k_state ) |
| 783 | 781 | |
| 784 | 782 | /* basic machine hardware */ |
| r244683 | r244684 | |
| 799 | 797 | MACHINE_CONFIG_END |
| 800 | 798 | |
| 801 | 799 | |
| 800 | |
| 801 | |
| 802 | |
| 802 | 803 | /*************************************************************************** |
| 803 | 804 | |
| 804 | 805 | Entex Electronic Baseball (1) |
| r244683 | r244684 | |
| 865 | 866 | ebball_display(); |
| 866 | 867 | } |
| 867 | 868 | |
| 869 | |
| 868 | 870 | static INPUT_PORTS_START( ebball ) |
| 869 | 871 | PORT_START("IN.0") // R1 |
| 870 | 872 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 Change Up") |
| r244683 | r244684 | |
| 916 | 918 | |
| 917 | 919 | |
| 918 | 920 | |
| 921 | |
| 922 | |
| 919 | 923 | /*************************************************************************** |
| 920 | 924 | |
| 921 | 925 | Ideal Electronic Detective |
| r244683 | r244684 | |
| 927 | 931 | difficulty(1-3), then number of players(1-4), then [ENTER]. Refer to the |
| 928 | 932 | manual for more information. |
| 929 | 933 | |
| 930 | | |
| 931 | | TODO: |
| 932 | | - MCU clock is unknown |
| 933 | | |
| 934 | 934 | ***************************************************************************/ |
| 935 | 935 | |
| 936 | | |
| 937 | 936 | READ8_MEMBER(hh_tms1k_state::elecdet_read_k) |
| 938 | 937 | { |
| 939 | 938 | // note: the Vss row is always on |
| r244683 | r244684 | |
| 1209 | 1208 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("9") |
| 1210 | 1209 | INPUT_PORTS_END |
| 1211 | 1210 | |
| 1212 | | |
| 1213 | | |
| 1214 | 1211 | static MACHINE_CONFIG_START( comp4, hh_tms1k_state ) |
| 1215 | 1212 | |
| 1216 | 1213 | /* basic machine hardware */ |
| r244683 | r244684 | |
| 1228 | 1225 | MACHINE_CONFIG_END |
| 1229 | 1226 | |
| 1230 | 1227 | |
| 1228 | |
| 1229 | |
| 1230 | |
| 1231 | 1231 | /*************************************************************************** |
| 1232 | 1232 | |
| 1233 | 1233 | Milton Bradley Simon, created by Ralph Baer |
| r244683 | r244684 | |
| 1235 | 1235 | Revision A hardware: |
| 1236 | 1236 | * TMS1000 (die labeled MP3226), DS75494 lamp driver |
| 1237 | 1237 | |
| 1238 | | Newer revisions have a smaller 16-pin MB4850 chip instead of the TMS1000. |
| 1239 | | This one has been decapped too, but we couldn't find an internal ROM. |
| 1240 | | It is possibly a cost-reduced custom ASIC specifically for Simon. |
| 1238 | Newer revisions (also Pocket Simon) have a smaller 16-pin MB4850 chip |
| 1239 | instead of the TMS1000. This one has been decapped too, but we couldn't |
| 1240 | find an internal ROM. It is possibly a cost-reduced custom ASIC specifically |
| 1241 | for Simon. The semi-sequel Super Simon uses a TMS1100. |
| 1241 | 1242 | |
| 1242 | | Other games assumed to be on similar hardware: |
| 1243 | | - Pocket Simon, but there's a chance it only exists with MB4850 chip |
| 1244 | | - Super Simon (TMS1100) |
| 1245 | | |
| 1246 | 1243 | ***************************************************************************/ |
| 1247 | 1244 | |
| 1248 | 1245 | READ8_MEMBER(hh_tms1k_state::simon_read_k) |
| r244683 | r244684 | |
| 1325 | 1322 | |
| 1326 | 1323 | |
| 1327 | 1324 | |
| 1325 | |
| 1328 | 1326 | /*************************************************************************** |
| 1329 | 1327 | |
| 1330 | 1328 | Parker Brothers Code Name: Sector, by Bob Doyle |
| r244683 | r244684 | |
| 1334 | 1332 | boats are used to remember your locations (a Paint app should be ok too). |
| 1335 | 1333 | Refer to the official manual for more information, it is not a simple game. |
| 1336 | 1334 | |
| 1337 | | |
| 1338 | | TODO: |
| 1339 | | - MCU clock is unknown |
| 1340 | | |
| 1341 | 1335 | ***************************************************************************/ |
| 1342 | 1336 | |
| 1343 | 1337 | READ8_MEMBER(hh_tms1k_state::cnsector_read_k) |
| r244683 | r244684 | |
| 1373 | 1367 | } |
| 1374 | 1368 | |
| 1375 | 1369 | |
| 1376 | | |
| 1377 | 1370 | static INPUT_PORTS_START( cnsector ) |
| 1378 | 1371 | PORT_START("IN.0") // O0 |
| 1379 | 1372 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_CODE(KEYCODE_Q) PORT_NAME("Next Ship") |
| r244683 | r244684 | |
| 1426 | 1419 | |
| 1427 | 1420 | |
| 1428 | 1421 | |
| 1422 | |
| 1429 | 1423 | /*************************************************************************** |
| 1430 | 1424 | |
| 1431 | | Parker Bros Merlin handheld computer game, by Bob Doyle |
| 1425 | Parker Bros Merlin handheld game, by Bob Doyle |
| 1432 | 1426 | * TMS1100NLL MP3404A-N2 |
| 1427 | * red LEDs and 1-bit sound |
| 1428 | |
| 1429 | Also published in Japan by Tomy as "Dr. Smith", white case instead of red. |
| 1430 | The one with dark-blue case is the rare sequel Master Merlin. More sequels |
| 1431 | followed too, but on other hardware. |
| 1433 | 1432 | |
| 1434 | 1433 | To start a game, press NEW GAME, followed by a number: |
| 1435 | 1434 | 1: Tic-Tac-Toe |
| r244683 | r244684 | |
| 1441 | 1440 | |
| 1442 | 1441 | Refer to the official manual for more information on the games. |
| 1443 | 1442 | |
| 1444 | | |
| 1445 | | Other handhelds assumed to be on similar hardware: |
| 1446 | | - Dr. Smith - by Tomy, released in Japan (basically a white version of Merlin, |
| 1447 | | let's assume for now that the ROM contents is identical) |
| 1448 | | - Master Merlin |
| 1449 | | |
| 1450 | 1443 | ***************************************************************************/ |
| 1451 | 1444 | |
| 1452 | 1445 | READ8_MEMBER(hh_tms1k_state::merlin_read_k) |
| r244683 | r244684 | |
| 1479 | 1472 | } |
| 1480 | 1473 | |
| 1481 | 1474 | |
| 1482 | | |
| 1483 | 1475 | static INPUT_PORTS_START( merlin ) |
| 1484 | 1476 | PORT_START("IN.0") // O0 |
| 1485 | 1477 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME("Button 0") |
| r244683 | r244684 | |
| 1509 | 1501 | |
| 1510 | 1502 | static const INT16 merlin_speaker_levels[] = { 0, 10922, 21845, 32767 }; |
| 1511 | 1503 | |
| 1512 | | |
| 1513 | 1504 | static MACHINE_CONFIG_START( merlin, hh_tms1k_state ) |
| 1514 | 1505 | |
| 1515 | 1506 | /* basic machine hardware */ |
| r244683 | r244684 | |
| 1531 | 1522 | MACHINE_CONFIG_END |
| 1532 | 1523 | |
| 1533 | 1524 | |
| 1525 | |
| 1526 | |
| 1527 | |
| 1534 | 1528 | /*************************************************************************** |
| 1535 | 1529 | |
| 1536 | 1530 | Parker Brothers Stop Thief, by Bob Doyle |
| r244683 | r244684 | |
| 1540 | 1534 | (called Electronic Crime Scanner) is an accessory. To start a game, press |
| 1541 | 1535 | the ON button. Otherwise, it is in test-mode where you can hear all sounds. |
| 1542 | 1536 | |
| 1543 | | |
| 1544 | | TODO: |
| 1545 | | - MCU clock is unknown |
| 1546 | | - stopthiep: unable to start a game (may be intentional?) |
| 1547 | | |
| 1548 | 1537 | ***************************************************************************/ |
| 1549 | 1538 | |
| 1550 | 1539 | READ8_MEMBER(hh_tms1k_state::stopthief_read_k) |
| r244683 | r244684 | |
| 1639 | 1628 | |
| 1640 | 1629 | |
| 1641 | 1630 | |
| 1631 | |
| 1642 | 1632 | /*************************************************************************** |
| 1643 | 1633 | |
| 1644 | 1634 | Parker Brothers Bank Shot (known as Cue Ball in the UK), by Garry Kitchen |
| r244683 | r244684 | |
| 1652 | 1642 | 3: Poison Pool |
| 1653 | 1643 | 4: Trick Shots |
| 1654 | 1644 | |
| 1655 | | |
| 1656 | | TODO: |
| 1657 | | - bankshot: the cue ball led is strobed more often than other leds, |
| 1658 | | making it look brighter. We need more accurate led decay simulation |
| 1659 | | for this to work. |
| 1660 | | - MCU clock is unknown |
| 1661 | | |
| 1662 | 1645 | ***************************************************************************/ |
| 1663 | 1646 | |
| 1664 | 1647 | READ8_MEMBER(hh_tms1k_state::bankshot_read_k) |
| r244683 | r244684 | |
| 1688 | 1671 | } |
| 1689 | 1672 | |
| 1690 | 1673 | |
| 1691 | | |
| 1692 | | |
| 1693 | 1674 | /* physical button layout and labels is like this: |
| 1694 | 1675 | (note: remember that you can rotate the display in MESS) |
| 1695 | 1676 | |
| r244683 | r244684 | |
| 1716 | 1697 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 1717 | 1698 | INPUT_PORTS_END |
| 1718 | 1699 | |
| 1719 | | |
| 1720 | 1700 | static MACHINE_CONFIG_START( bankshot, hh_tms1k_state ) |
| 1721 | 1701 | |
| 1722 | 1702 | /* basic machine hardware */ |
| r244683 | r244684 | |
| 1739 | 1719 | |
| 1740 | 1720 | |
| 1741 | 1721 | |
| 1722 | |
| 1742 | 1723 | /*************************************************************************** |
| 1743 | 1724 | |
| 1744 | 1725 | Parker Brothers Split Second |
| r244683 | r244684 | |
| 1833 | 1814 | |
| 1834 | 1815 | |
| 1835 | 1816 | |
| 1836 | | |
| 1837 | | |
| 1838 | 1817 | /*************************************************************************** |
| 1839 | 1818 | |
| 1840 | 1819 | Tandy Radio Shack Computerized Arcade (1981, 1982, 1995) |
| r244683 | r244684 | |
| 1854 | 1833 | |
| 1855 | 1834 | See below at the input defs for a list of the games. |
| 1856 | 1835 | |
| 1857 | | |
| 1858 | | TODO: |
| 1859 | | - output PLA is not verified |
| 1860 | | - microinstructions PLA is not verified |
| 1861 | | |
| 1862 | 1836 | ***************************************************************************/ |
| 1863 | 1837 | |
| 1864 | 1838 | void hh_tms1k_state::tandy12_display() |
| r244683 | r244684 | |
| 1958 | 1932 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 |
| 1959 | 1933 | }; |
| 1960 | 1934 | |
| 1961 | | |
| 1962 | 1935 | static MACHINE_CONFIG_START( tandy12, hh_tms1k_state ) |
| 1963 | 1936 | |
| 1964 | 1937 | /* basic machine hardware */ |
| r244683 | r244684 | |
| 1981 | 1954 | |
| 1982 | 1955 | |
| 1983 | 1956 | |
| 1957 | |
| 1958 | |
| 1984 | 1959 | /*************************************************************************** |
| 1985 | 1960 | |
| 1986 | 1961 | TMS1100NLL MP3403 DBS 7836 SINGAPORE some game board with 7-segs. |
| r244683 | r244684 | |
| 2043 | 2018 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) |
| 2044 | 2019 | INPUT_PORTS_END |
| 2045 | 2020 | |
| 2021 | |
| 2046 | 2022 | static const UINT16 unk3403_output_pla[0x20] = |
| 2047 | 2023 | { |
| 2048 | 2024 | /* O output PLA configuration currently unknown */ |
| r244683 | r244684 | |
| 2052 | 2028 | 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f |
| 2053 | 2029 | }; |
| 2054 | 2030 | |
| 2055 | | |
| 2056 | 2031 | static MACHINE_CONFIG_START( unk3403, hh_tms1k_state ) |
| 2057 | 2032 | |
| 2058 | 2033 | /* basic machine hardware */ |
| r244683 | r244684 | |
| 2071 | 2046 | MACHINE_CONFIG_END |
| 2072 | 2047 | |
| 2073 | 2048 | |
| 2049 | |
| 2050 | |
| 2051 | |
| 2074 | 2052 | /*************************************************************************** |
| 2075 | 2053 | |
| 2076 | 2054 | Game driver(s) |
| 2077 | 2055 | |
| 2078 | 2056 | ***************************************************************************/ |
| 2079 | 2057 | |
| 2080 | | |
| 2081 | 2058 | ROM_START( mathmagi ) |
| 2082 | 2059 | ROM_REGION( 0x800, "maincpu", 0 ) |
| 2083 | 2060 | ROM_LOAD( "mp1030", 0x0000, 0x800, CRC(a81d7ccb) SHA1(4756ce42f1ea28ce5fe6498312f8306f10370969) ) |
| r244683 | r244684 | |
| 2100 | 2077 | ROM_END |
| 2101 | 2078 | |
| 2102 | 2079 | |
| 2103 | | |
| 2104 | | |
| 2105 | 2080 | ROM_START( tc4 ) |
| 2106 | 2081 | ROM_REGION( 0x1000, "maincpu", 0 ) |
| 2107 | 2082 | ROM_LOAD( "mp7334", 0x0000, 0x1000, CRC(923f3821) SHA1(a9ae342d7ff8dae1dedcd1e4984bcfae68586581) ) |
| r244683 | r244684 | |
| 2160 | 2135 | ROM_END |
| 2161 | 2136 | |
| 2162 | 2137 | |
| 2163 | | |
| 2164 | 2138 | ROM_START( comp4 ) |
| 2165 | 2139 | ROM_REGION( 0x0400, "maincpu", 0 ) |
| 2166 | 2140 | ROM_LOAD( "tmc0904nl_cp0904a", 0x0000, 0x0400, CRC(6233ee1b) SHA1(738e109b38c97804b4ec52bed80b00a8634ad453) ) |
| r244683 | r244684 | |
| 2186 | 2160 | ROM_LOAD( "tms1000_simon_opla.pla", 0, 365, CRC(2943c71b) SHA1(bd5bb55c57e7ba27e49c645937ec1d4e67506601) ) |
| 2187 | 2161 | ROM_END |
| 2188 | 2162 | |
| 2163 | |
| 2189 | 2164 | ROM_START( cnsector ) |
| 2190 | 2165 | ROM_REGION( 0x0400, "maincpu", 0 ) |
| 2191 | 2166 | ROM_LOAD( "mp0905bnl_za0379", 0x0000, 0x0400, CRC(201036e9) SHA1(b37fef86bb2bceaf0ac8bb3745b4702d17366914) ) |
| r244683 | r244684 | |
| 2240 | 2215 | ROM_LOAD( "tms0980_stopthie_spla.pla", 0, 157, CRC(399aa481) SHA1(72c56c58fde3fbb657d69647a9543b5f8fc74279) ) |
| 2241 | 2216 | ROM_END |
| 2242 | 2217 | |
| 2218 | |
| 2243 | 2219 | ROM_START( bankshot ) |
| 2244 | 2220 | ROM_REGION( 0x1000, "maincpu", 0 ) |
| 2245 | 2221 | ROM_LOAD( "mp7313", 0x0000, 0x1000, CRC(7a5016a9) SHA1(a8730dc8a282ffaa3d89e675f371d43eb39f39b4) ) |
| r244683 | r244684 | |
| 2272 | 2248 | ROM_LOAD( "tms1100_tandy12_opla.pla", 0, 365, NO_DUMP ) |
| 2273 | 2249 | ROM_END |
| 2274 | 2250 | |
| 2251 | |
| 2275 | 2252 | ROM_START( unk3403 ) |
| 2276 | 2253 | ROM_REGION( 0x0800, "maincpu", 0 ) |
| 2277 | 2254 | ROM_LOAD( "mp3403", 0x0000, 0x0800, CRC(9eabaa7d) SHA1(b1f54587ed7f2bbf3a5d49075c807296384c2b06) ) |
| r244683 | r244684 | |
| 2284 | 2261 | |
| 2285 | 2262 | |
| 2286 | 2263 | |
| 2287 | | |
| 2288 | | |
| 2289 | | |
| 2290 | | |
| 2291 | | |
| 2292 | 2264 | CONS( 1980, mathmagi, 0, 0, mathmagi, mathmagi, driver_device, 0, "APF Electronics Inc.", "Mathemagician", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW ) |
| 2293 | 2265 | |
| 2294 | 2266 | CONS( 1979, amaztron, 0, 0, amaztron, amaztron, driver_device, 0, "Coleco", "Amaze-A-Tron", GAME_SUPPORTS_SAVE ) |
| r244683 | r244684 | |
| 2304 | 2276 | CONS( 1977, comp4, 0, 0, comp4, comp4, driver_device, 0, "Milton Bradley", "Comp IV", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW ) |
| 2305 | 2277 | CONS( 1978, simon, 0, 0, simon, simon, driver_device, 0, "Milton Bradley", "Simon (Rev. A)", GAME_SUPPORTS_SAVE ) |
| 2306 | 2278 | |
| 2307 | | |
| 2308 | 2279 | CONS( 1977, cnsector, 0, 0, cnsector, cnsector, driver_device, 0, "Parker Brothers", "Code Name: Sector", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW ) |
| 2309 | 2280 | CONS( 1978, merlin, 0, 0, merlin, merlin, driver_device, 0, "Parker Brothers", "Merlin", GAME_SUPPORTS_SAVE ) |
| 2310 | 2281 | CONS( 1979, stopthie, 0, 0, stopthief, stopthief, driver_device, 0, "Parker Brothers", "Stop Thief (Electronic Crime Scanner)", GAME_SUPPORTS_SAVE ) |