trunk/src/mess/drivers/hh_tms1k.c
| r244874 | r244875 | |
| 20 | 20 | *MP1221 TMS1100 1980, Entex Raise The Devil |
| 21 | 21 | *MP2788 ? 1980, Bandai Flight Time |
| 22 | 22 | @MP3226 TMS1000 1978, Milton Bradley Simon |
| 23 | *MP3320A TMS1000 1979, Coleco Head to Head Basketball |
| 23 | 24 | MP3403 TMS1100 1978, Marx Electronic Bowling |
| 24 | 25 | @MP3404 TMS1100 1978, Parker Brothers Merlin |
| 25 | 26 | @MP3405 TMS1100 1979, Coleco Amaze-A-Tron |
| r244874 | r244875 | |
| 157 | 158 | DECLARE_READ8_MEMBER(ebball3_read_k); |
| 158 | 159 | DECLARE_WRITE16_MEMBER(ebball3_write_r); |
| 159 | 160 | DECLARE_WRITE16_MEMBER(ebball3_write_o); |
| 161 | void ebball3_set_clock(); |
| 162 | DECLARE_INPUT_CHANGED_MEMBER(ebball3_difficulty_switch); |
| 163 | DECLARE_MACHINE_RESET(ebball3); |
| 160 | 164 | |
| 161 | 165 | DECLARE_READ8_MEMBER(elecdet_read_k); |
| 162 | 166 | DECLARE_WRITE16_MEMBER(elecdet_write_r); |
| r244874 | r244875 | |
| 937 | 941 | * boards are labeled: Zeny |
| 938 | 942 | * TMS1100NLL 6007 MP1204 (die labeled MP1204) |
| 939 | 943 | * 2*SN75492N LED display driver |
| 944 | |
| 945 | This is another improvement over Entex Baseball, where gameplay is a bit more |
| 946 | varied, and it keeps up with score and innings. Like the others, the pitcher |
| 947 | controls are on a separate joypad. |
| 940 | 948 | |
| 941 | 949 | |
| 942 | 950 | lamp translation table: led zz from game PCB = MESS lampyx: |
| r244874 | r244875 | |
| 982 | 990 | |
| 983 | 991 | READ8_MEMBER(hh_tms1k_state::ebball3_read_k) |
| 984 | 992 | { |
| 985 | | //printf("%X ",m_r); |
| 986 | | |
| 987 | 993 | return read_inputs(3); |
| 988 | 994 | } |
| 989 | 995 | |
| r244874 | r244875 | |
| 1009 | 1015 | } |
| 1010 | 1016 | |
| 1011 | 1017 | |
| 1018 | /* physical button layout and labels is like this: |
| 1019 | |
| 1020 | main device (batter side): remote pitcher: |
| 1021 | |
| 1022 | MAN |
| 1023 | PRO | [FAST BALL] [CHANGE UP] [CURVE] [SLIDER] |
| 1024 | | OFF| |
| 1025 | o o [STEAL DEFENSE] [KNUCKLER] |
| 1026 | AM AUTO |
| 1027 | |
| 1028 | [BUNT] [BATTER] [STEAL] |
| 1029 | */ |
| 1030 | |
| 1012 | 1031 | static INPUT_PORTS_START( ebball3 ) |
| 1013 | 1032 | PORT_START("IN.0") // R0 |
| 1014 | | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) |
| 1015 | | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) |
| 1016 | | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON3 ) |
| 1017 | | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON4 ) |
| 1033 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 Fast Ball") |
| 1034 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 Change Up") |
| 1035 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(2) PORT_NAME("P2 Slider") |
| 1036 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 Curve") |
| 1018 | 1037 | |
| 1019 | 1038 | PORT_START("IN.1") // R1 |
| 1020 | | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON5 ) |
| 1021 | | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON6 ) |
| 1022 | | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON7 ) |
| 1023 | | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON8 ) |
| 1039 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_PLAYER(2) PORT_NAME("P2 Knuckler") |
| 1040 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P1 Steal") |
| 1041 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P1 Batter") |
| 1042 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_PLAYER(2) PORT_NAME("P2 Steal Defense") |
| 1024 | 1043 | |
| 1025 | 1044 | PORT_START("IN.2") // R2 |
| 1026 | | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON10 ) |
| 1027 | | // PORT_CONFNAME( 0x01, 0x01, "Pitcher" ) |
| 1028 | | // PORT_CONFSETTING( 0x01, "Auto" ) |
| 1029 | | // PORT_CONFSETTING( 0x00, "Manual" ) |
| 1030 | | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON9 ) |
| 1031 | | // PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 1032 | | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) |
| 1033 | | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) |
| 1045 | PORT_CONFNAME( 0x01, 0x01, "Pitcher" ) |
| 1046 | PORT_CONFSETTING( 0x01, "Auto" ) |
| 1047 | PORT_CONFSETTING( 0x00, "Manual" ) |
| 1048 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P1 Bunt") |
| 1049 | PORT_BIT( 0x0c, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 1050 | |
| 1051 | PORT_START("IN.3") // fake |
| 1052 | PORT_CONFNAME( 0x01, 0x00, DEF_STR( Difficulty ) ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_tms1k_state, ebball3_difficulty_switch, NULL) |
| 1053 | PORT_CONFSETTING( 0x00, "Amateur" ) |
| 1054 | PORT_CONFSETTING( 0x01, "Professional" ) |
| 1034 | 1055 | INPUT_PORTS_END |
| 1035 | 1056 | |
| 1036 | 1057 | |
| 1058 | void hh_tms1k_state::ebball3_set_clock() |
| 1059 | { |
| 1060 | // MCU clock is from an RC circuit oscillating by default at ~375kHz, |
| 1061 | // but on PRO, the difficulty switch adds an extra capacitor to Vdd to speed |
| 1062 | // it up to unknown, let's assume ~425kHz. |
| 1063 | m_maincpu->set_unscaled_clock(m_inp_matrix[3]->read() & 1 ? 425000 : 375000); |
| 1064 | } |
| 1065 | |
| 1066 | INPUT_CHANGED_MEMBER(hh_tms1k_state::ebball3_difficulty_switch) |
| 1067 | { |
| 1068 | ebball3_set_clock(); |
| 1069 | } |
| 1070 | |
| 1071 | MACHINE_RESET_MEMBER(hh_tms1k_state, ebball3) |
| 1072 | { |
| 1073 | machine_reset(); |
| 1074 | ebball3_set_clock(); |
| 1075 | } |
| 1076 | |
| 1037 | 1077 | static MACHINE_CONFIG_START( ebball3, hh_tms1k_state ) |
| 1038 | 1078 | |
| 1039 | 1079 | /* basic machine hardware */ |
| 1040 | | MCFG_CPU_ADD("maincpu", TMS1100, 425000) // RC osc. R=47K, C=33pf -> ~425kHz |
| 1080 | MCFG_CPU_ADD("maincpu", TMS1100, 375000) // RC osc. R=47K, C=33pf -> ~375kHz |
| 1041 | 1081 | MCFG_TMS1XXX_READ_K_CB(READ8(hh_tms1k_state, ebball3_read_k)) |
| 1042 | 1082 | MCFG_TMS1XXX_WRITE_R_CB(WRITE16(hh_tms1k_state, ebball3_write_r)) |
| 1043 | 1083 | MCFG_TMS1XXX_WRITE_O_CB(WRITE16(hh_tms1k_state, ebball3_write_o)) |
| r244874 | r244875 | |
| 1045 | 1085 | MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_tms1k_state, display_decay_tick, attotime::from_msec(1)) |
| 1046 | 1086 | MCFG_DEFAULT_LAYOUT(layout_ebball3) |
| 1047 | 1087 | |
| 1088 | MCFG_MACHINE_RESET_OVERRIDE(hh_tms1k_state, ebball3) |
| 1089 | |
| 1048 | 1090 | /* no video! */ |
| 1049 | 1091 | |
| 1050 | 1092 | /* sound hardware */ |
| r244874 | r244875 | |
| 2311 | 2353 | CONS( 1979, amaztron, 0, 0, amaztron, amaztron, driver_device, 0, "Coleco", "Amaze-A-Tron", GAME_SUPPORTS_SAVE ) |
| 2312 | 2354 | CONS( 1981, tc4, 0, 0, tc4, tc4, driver_device, 0, "Coleco", "Total Control 4", GAME_SUPPORTS_SAVE ) |
| 2313 | 2355 | |
| 2314 | | CONS( 1979, ebball, 0, 0, ebball, ebball, driver_device, 0, "Entex", "Electronic Baseball", GAME_SUPPORTS_SAVE ) |
| 2315 | | CONS( 1980, ebball3, 0, 0, ebball3, ebball3, driver_device, 0, "Entex", "Electronic Baseball 3", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING ) |
| 2356 | CONS( 1979, ebball, 0, 0, ebball, ebball, driver_device, 0, "Entex", "Electronic Baseball (Entex)", GAME_SUPPORTS_SAVE ) |
| 2357 | CONS( 1980, ebball3, 0, 0, ebball3, ebball3, driver_device, 0, "Entex", "Electronic Baseball 3 (Entex)", GAME_SUPPORTS_SAVE ) |
| 2316 | 2358 | |
| 2317 | 2359 | CONS( 1979, elecdet, 0, 0, elecdet, elecdet, driver_device, 0, "Ideal", "Electronic Detective", GAME_SUPPORTS_SAVE ) // unplayable without game cards |
| 2318 | 2360 | |