trunk/src/mess/drivers/hh_hmcs40.c
| r248493 | r248494 | |
| 30 | 30 | @88 HD38800A 1984, Tomy Tron (THN-02) |
| 31 | 31 | |
| 32 | 32 | @01 HD38800B 1982, Gakken Crazy Kong |
| 33 | | *19 HD38800B 1982, Bandai Zaxxon |
| 33 | @19 HD38800B 1982, Bandai Zaxxon |
| 34 | 34 | @23 HD38800B 1982, Tomy Kingman (THF-01II) |
| 35 | 35 | *24 HD38800B 1982, Actronics(Hanzawa) Wanted G-Man |
| 36 | 36 | *29 HD38800B 1984, Tomy Portable 6000 Bombman |
| 37 | 37 | *35 HD38800B 1983, Bandai Gundam vs Gelgoog Zaku |
| 38 | 38 | @43 HD38800B 1983, Bandai Dokodemo Dorayaki Doraemon (PT-412) |
| 39 | @52 HD38800B 1983, Bandai Ultra Man (PT-424) |
| 39 | 40 | |
| 40 | 41 | @09 HD38820A 1980, Mattel World Championship Baseball |
| 41 | 42 | @13 HD38820A 1981, Entex Galaxian 2 |
| r248493 | r248494 | |
| 940 | 941 | |
| 941 | 942 | /*************************************************************************** |
| 942 | 943 | |
| 944 | Bandai Zaxxon (manufactured in Japan, licensed from Sega) |
| 945 | * PCB label FL Zaxxon |
| 946 | * Hitachi HD38800B19 MCU |
| 947 | * cyan/red/blue VFD display NEC FIP11BM24T no. 4-8, half of it reflected |
| 948 | with a one-way mirror to give the illusion of a 3D display |
| 949 | |
| 950 | NOTE!: MESS external artwork is recommended |
| 951 | |
| 952 | ***************************************************************************/ |
| 953 | |
| 954 | class bzaxxon_state : public hh_hmcs40_state |
| 955 | { |
| 956 | public: |
| 957 | bzaxxon_state(const machine_config &mconfig, device_type type, const char *tag) |
| 958 | : hh_hmcs40_state(mconfig, type, tag) |
| 959 | { } |
| 960 | |
| 961 | DECLARE_WRITE8_MEMBER(plate_w); |
| 962 | DECLARE_WRITE16_MEMBER(grid_w); |
| 963 | |
| 964 | void update_int1(); |
| 965 | DECLARE_INPUT_CHANGED_MEMBER(input_changed); |
| 966 | }; |
| 967 | |
| 968 | // handlers |
| 969 | |
| 970 | WRITE8_MEMBER(bzaxxon_state::plate_w) |
| 971 | { |
| 972 | // R0x-R3x(,D0-D2): vfd matrix plate |
| 973 | int shift = offset * 4; |
| 974 | m_plate = (m_plate & ~(0xf << shift)) | (data << shift); |
| 975 | |
| 976 | // update display |
| 977 | |
| 978 | // hmm plate desc. wrong? |
| 979 | // x, 7, 8, 9, 6, 5, 4, 3, 0, 3, 1, 2,16,10,17,11,12,13,14,15 |
| 980 | // 19,18,17,16,15,14,13,12,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 |
| 981 | // , , , , , , , , , , , , , , , , , , , |
| 982 | |
| 983 | UINT16 grid = BITSWAP16(m_grid,15,14,13,12,11,6,7,8,9,10,5,4,3,2,1,0); |
| 984 | UINT32 plate = m_plate;//BITSWAP24(m_plate,23,22,21,20, |
| 985 | display_matrix(20, 11, plate, grid); |
| 986 | } |
| 987 | |
| 988 | WRITE16_MEMBER(bzaxxon_state::grid_w) |
| 989 | { |
| 990 | // D4: speaker out |
| 991 | m_speaker->level_w(data >> 4 & 1); |
| 992 | |
| 993 | // D7-D10: input mux |
| 994 | UINT8 inp_mux = data >> 7 & 0xf; |
| 995 | if (inp_mux != m_inp_mux) |
| 996 | { |
| 997 | m_inp_mux = inp_mux; |
| 998 | update_int1(); |
| 999 | } |
| 1000 | |
| 1001 | // D5-D15: vfd matrix grid |
| 1002 | m_grid = data >> 5 & 0x7ff; |
| 1003 | |
| 1004 | // D0-D2: plate 7-9 (update display there) |
| 1005 | plate_w(space, 4, data & 7); |
| 1006 | } |
| 1007 | |
| 1008 | void bzaxxon_state::update_int1() |
| 1009 | { |
| 1010 | // INT0 on multiplexed inputs |
| 1011 | set_interrupt(1, read_inputs(4)); |
| 1012 | } |
| 1013 | |
| 1014 | |
| 1015 | // config |
| 1016 | |
| 1017 | static INPUT_PORTS_START( bzaxxon ) |
| 1018 | PORT_START("IN.0") // D7 INT1 |
| 1019 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, bzaxxon_state, input_changed, NULL) |
| 1020 | |
| 1021 | PORT_START("IN.1") // D8 INT1 |
| 1022 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, bzaxxon_state, input_changed, NULL) |
| 1023 | |
| 1024 | PORT_START("IN.2") // D9 INT1 |
| 1025 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, bzaxxon_state, input_changed, NULL) |
| 1026 | |
| 1027 | PORT_START("IN.3") // D10 INT1 |
| 1028 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, bzaxxon_state, input_changed, NULL) |
| 1029 | |
| 1030 | PORT_START("IN.4") // INT0 |
| 1031 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0) |
| 1032 | |
| 1033 | PORT_START("IN.5") // port D |
| 1034 | PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_SELECT ) |
| 1035 | PORT_BIT( 0xfff7, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 1036 | INPUT_PORTS_END |
| 1037 | |
| 1038 | INPUT_CHANGED_MEMBER(bzaxxon_state::input_changed) |
| 1039 | { |
| 1040 | update_int1(); |
| 1041 | } |
| 1042 | |
| 1043 | |
| 1044 | static MACHINE_CONFIG_START( bzaxxon, bzaxxon_state ) |
| 1045 | |
| 1046 | /* basic machine hardware */ |
| 1047 | MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation |
| 1048 | MCFG_HMCS40_WRITE_R_CB(0, WRITE8(bzaxxon_state, plate_w)) |
| 1049 | MCFG_HMCS40_WRITE_R_CB(1, WRITE8(bzaxxon_state, plate_w)) |
| 1050 | MCFG_HMCS40_WRITE_R_CB(2, WRITE8(bzaxxon_state, plate_w)) |
| 1051 | MCFG_HMCS40_WRITE_R_CB(3, WRITE8(bzaxxon_state, plate_w)) |
| 1052 | MCFG_HMCS40_WRITE_D_CB(WRITE16(bzaxxon_state, grid_w)) |
| 1053 | MCFG_HMCS40_READ_D_CB(IOPORT("IN.5")) |
| 1054 | |
| 1055 | MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1)) |
| 1056 | MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test) |
| 1057 | |
| 1058 | /* no video! */ |
| 1059 | |
| 1060 | /* sound hardware */ |
| 1061 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 1062 | MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) |
| 1063 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 1064 | MACHINE_CONFIG_END |
| 1065 | |
| 1066 | |
| 1067 | |
| 1068 | |
| 1069 | |
| 1070 | /*************************************************************************** |
| 1071 | |
| 943 | 1072 | Bandai Zackman "The Pit, FL Exploration of Space" (manufactured in Japan) |
| 944 | 1073 | * Hitachi QFP HD38820A49 MCU |
| 945 | 1074 | * cyan/red/yellow VFD display Futaba DM-53Z 3E, with color overlay |
| r248493 | r248494 | |
| 1156 | 1285 | |
| 1157 | 1286 | /*************************************************************************** |
| 1158 | 1287 | |
| 1288 | Bandai Ultra Man (FL LSI Game Push Up) (manufactured in Japan) |
| 1289 | * PCB label Kaken Corp. PT-424 FL Ultra Man |
| 1290 | * Hitachi HD38800B52 MCU |
| 1291 | * cyan/red/blue VFD display NEC FIP8BM25T no. 21-8 2 |
| 1292 | |
| 1293 | NOTE!: MESS external artwork is recommended |
| 1294 | |
| 1295 | ***************************************************************************/ |
| 1296 | |
| 1297 | class bultrman_state : public hh_hmcs40_state |
| 1298 | { |
| 1299 | public: |
| 1300 | bultrman_state(const machine_config &mconfig, device_type type, const char *tag) |
| 1301 | : hh_hmcs40_state(mconfig, type, tag) |
| 1302 | { } |
| 1303 | |
| 1304 | DECLARE_WRITE8_MEMBER(plate_w); |
| 1305 | DECLARE_WRITE16_MEMBER(grid_w); |
| 1306 | }; |
| 1307 | |
| 1308 | // handlers |
| 1309 | |
| 1310 | WRITE8_MEMBER(bultrman_state::plate_w) |
| 1311 | { |
| 1312 | // R0x-R3x(,D0-D2): vfd matrix plate |
| 1313 | int shift = offset * 4; |
| 1314 | m_plate = (m_plate & ~(0xf << shift)) | (data << shift); |
| 1315 | |
| 1316 | // update display |
| 1317 | UINT8 grid = BITSWAP8(m_grid,0,1,2,3,4,5,6,7); |
| 1318 | UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,18,17,16,15,14,13,12,11,2,10,9,8,7,6,5,4,3,0,1); |
| 1319 | display_matrix(18, 8, plate, grid); |
| 1320 | } |
| 1321 | |
| 1322 | WRITE16_MEMBER(bultrman_state::grid_w) |
| 1323 | { |
| 1324 | // D7: speaker out |
| 1325 | m_speaker->level_w(data >> 7 & 1); |
| 1326 | |
| 1327 | // D8-D15: vfd matrix grid |
| 1328 | m_grid = data >> 8 & 0xff; |
| 1329 | |
| 1330 | // D0-D2: plate 15-17 (update display there) |
| 1331 | plate_w(space, 4, data & 7); |
| 1332 | } |
| 1333 | |
| 1334 | |
| 1335 | // config |
| 1336 | |
| 1337 | static INPUT_PORTS_START( bultrman ) |
| 1338 | PORT_START("IN.0") // INT0 |
| 1339 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0) |
| 1340 | |
| 1341 | PORT_START("IN.1") // port D |
| 1342 | PORT_CONFNAME( 0x10, 0x00, "Factory Test" ) |
| 1343 | PORT_CONFSETTING( 0x00, DEF_STR( Off ) ) |
| 1344 | PORT_CONFSETTING( 0x10, DEF_STR( On ) ) |
| 1345 | PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) |
| 1346 | PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) |
| 1347 | PORT_BIT( 0xff8f, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 1348 | INPUT_PORTS_END |
| 1349 | |
| 1350 | static MACHINE_CONFIG_START( bultrman, bultrman_state ) |
| 1351 | |
| 1352 | /* basic machine hardware */ |
| 1353 | MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation |
| 1354 | MCFG_HMCS40_WRITE_R_CB(0, WRITE8(bultrman_state, plate_w)) |
| 1355 | MCFG_HMCS40_WRITE_R_CB(1, WRITE8(bultrman_state, plate_w)) |
| 1356 | MCFG_HMCS40_WRITE_R_CB(2, WRITE8(bultrman_state, plate_w)) |
| 1357 | MCFG_HMCS40_WRITE_R_CB(3, WRITE8(bultrman_state, plate_w)) |
| 1358 | MCFG_HMCS40_WRITE_D_CB(WRITE16(bultrman_state, grid_w)) |
| 1359 | MCFG_HMCS40_READ_D_CB(IOPORT("IN.1")) |
| 1360 | |
| 1361 | MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1)) |
| 1362 | MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test) |
| 1363 | |
| 1364 | /* no video! */ |
| 1365 | |
| 1366 | /* sound hardware */ |
| 1367 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 1368 | MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) |
| 1369 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) |
| 1370 | MACHINE_CONFIG_END |
| 1371 | |
| 1372 | |
| 1373 | |
| 1374 | |
| 1375 | |
| 1376 | /*************************************************************************** |
| 1377 | |
| 1159 | 1378 | Bandai Machine Man (FL Flat Type) (manufactured in Japan) |
| 1160 | 1379 | * PCB label Kaken PT-438 |
| 1161 | 1380 | * Hitachi QFP HD38820A85 MCU |
| r248493 | r248494 | |
| 1358 | 1577 | |
| 1359 | 1578 | /*************************************************************************** |
| 1360 | 1579 | |
| 1361 | | Coleco Donkey Kong (manufactured in Taiwan) |
| 1580 | Coleco Donkey Kong (manufactured in Taiwan, licensed from Nintendo) |
| 1362 | 1581 | * PCB label Coleco Rev C 75790 DK |
| 1363 | 1582 | * Hitachi QFP HD38820A45 MCU |
| 1364 | 1583 | * cyan/red VFD display Futaba DM-47ZK 2K, with color overlay |
| r248493 | r248494 | |
| 1613 | 1832 | |
| 1614 | 1833 | /*************************************************************************** |
| 1615 | 1834 | |
| 1616 | | Coleco Pac-Man (manufactured in Taiwan) |
| 1835 | Coleco Pac-Man (manufactured in Taiwan, licensed from Midway) |
| 1617 | 1836 | * PCB label Coleco 75690 |
| 1618 | 1837 | * Hitachi QFP HD38820A28/29 MCU |
| 1619 | 1838 | * cyan/red VFD display Futaba DM-34Z 2A, with color overlay |
| r248493 | r248494 | |
| 1734 | 1953 | |
| 1735 | 1954 | /*************************************************************************** |
| 1736 | 1955 | |
| 1737 | | Coleco Ms. Pac-Man (manufactured in Taiwan) |
| 1956 | Coleco Ms. Pac-Man (manufactured in Taiwan, licensed from Midway) |
| 1738 | 1957 | * PCB label Coleco 911171 |
| 1739 | 1958 | * Hitachi QFP HD38820A61 MCU |
| 1740 | 1959 | * cyan/red VFD display Futaba DM-60Z 3I, with color overlay |
| r248493 | r248494 | |
| 3320 | 3539 | ROM_END |
| 3321 | 3540 | |
| 3322 | 3541 | |
| 3542 | ROM_START( bzaxxon ) |
| 3543 | ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 ) |
| 3544 | ROM_LOAD( "hd38800b19", 0x0000, 0x1000, CRC(4fecb80d) SHA1(7adf079480ffd3825ad5ae1eaa4d892eecbcc42d) ) |
| 3545 | ROM_CONTINUE( 0x1e80, 0x0100 ) |
| 3546 | ROM_END |
| 3547 | |
| 3548 | |
| 3323 | 3549 | ROM_START( zackman ) |
| 3324 | 3550 | ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 ) |
| 3325 | 3551 | ROM_LOAD( "hd38820a49", 0x0000, 0x1000, CRC(b97f5ef6) SHA1(7fe20e8107361caf9ea657e504be1f8b10b8b03f) ) |
| r248493 | r248494 | |
| 3334 | 3560 | ROM_END |
| 3335 | 3561 | |
| 3336 | 3562 | |
| 3563 | ROM_START( bultrman ) |
| 3564 | ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 ) |
| 3565 | ROM_LOAD( "hd38800b52", 0x0000, 0x1000, CRC(88d372dc) SHA1(f2ac3b89be8afe6fb65914ccebe1a56316b9472a) ) |
| 3566 | ROM_CONTINUE( 0x1e80, 0x0100 ) |
| 3567 | ROM_END |
| 3568 | |
| 3569 | |
| 3337 | 3570 | ROM_START( machiman ) |
| 3338 | 3571 | ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 ) |
| 3339 | 3572 | ROM_LOAD( "hd38820a85", 0x0000, 0x1000, CRC(894b4954) SHA1(cab49638a326b031aa548301beb16f818759ef62) ) |
| r248493 | r248494 | |
| 3480 | 3713 | CONS( 1982, bfriskyt, 0, 0, bfriskyt, bfriskyt, driver_device, 0, "Bandai", "Frisky Tom (Bandai)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) |
| 3481 | 3714 | CONS( 1981, packmon, 0, 0, packmon, packmon, driver_device, 0, "Bandai", "Packri Monster", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) |
| 3482 | 3715 | CONS( 1982, msthawk, 0, 0, msthawk, msthawk, driver_device, 0, "Bandai (Mattel license)", "Star Hawk (Mattel)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) |
| 3716 | CONS( 1982, bzaxxon, 0, 0, bzaxxon, bzaxxon, driver_device, 0, "Bandai", "Zaxxon (Bandai)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING ) |
| 3483 | 3717 | CONS( 1983, zackman, 0, 0, zackman, zackman, driver_device, 0, "Bandai", "Zackman", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) |
| 3484 | 3718 | CONS( 1983, bdoramon, 0, 0, bdoramon, bdoramon, driver_device, 0, "Bandai", "Dokodemo Dorayaki Doraemon", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) |
| 3719 | CONS( 1983, bultrman, 0, 0, bultrman, bultrman, driver_device, 0, "Bandai", "Ultra Man (Bandai)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING ) |
| 3485 | 3720 | CONS( 1984, machiman, 0, 0, machiman, machiman, driver_device, 0, "Bandai", "Machine Man", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) |
| 3486 | 3721 | |
| 3487 | 3722 | CONS( 1981, alnattck, 0, 0, alnattck, alnattck, driver_device, 0, "Coleco", "Alien Attack", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK ) |