diff --git a/src/mame/drivers/mpu4.cpp b/src/mame/drivers/mpu4.cpp index 9240e476c81..3f437cfdb3c 100644 --- a/src/mame/drivers/mpu4.cpp +++ b/src/mame/drivers/mpu4.cpp @@ -2264,12 +2264,126 @@ static mpu4_chr_table blsbys_data[8] = { //request 36 42 27 42 09 42 27 42 42 09 //verify 00 04 04 0C 0C 1C 14 2C 5C 2C +DRIVER_INIT_MEMBER(mpu4_state,m4_low_volt_alt) +{ + //Some games can't use the 50Hz circuit to check voltage issues, handle it here + m_low_volt_detect_disable =1; +} DRIVER_INIT_MEMBER(mpu4_state,m4_small_extender) { m_lamp_extender=SMALL_CARD; } +DRIVER_INIT_MEMBER(mpu4_state,m4_large_extender_a) +{ + m_lamp_extender=LARGE_CARD_A; +} + +DRIVER_INIT_MEMBER(mpu4_state,m4_large_extender_b) +{ + m_lamp_extender=LARGE_CARD_B; +} + +DRIVER_INIT_MEMBER(mpu4_state,m4_large_extender_c) +{ + m_lamp_extender=LARGE_CARD_C; +} + +DRIVER_INIT_MEMBER(mpu4_state,m4_hopper_tubes) +{ + m_hopper = TUBES; +} + +DRIVER_INIT_MEMBER(mpu4_state,m4_hopper_duart_a) +{ + m_hopper = HOPPER_DUART_A; +} + +DRIVER_INIT_MEMBER(mpu4_state,m4_hopper_duart_b) +{ + m_hopper = HOPPER_DUART_B; +} + +DRIVER_INIT_MEMBER(mpu4_state,m4_hopper_duart_c) +{ + m_hopper = HOPPER_DUART_C; +} + +DRIVER_INIT_MEMBER(mpu4_state,m4_hopper_nonduart_a) +{ + m_hopper = HOPPER_NONDUART_A; +} + +DRIVER_INIT_MEMBER(mpu4_state,m4_hopper_nonduart_b) +{ + m_hopper = HOPPER_NONDUART_B; +} + +DRIVER_INIT_MEMBER(mpu4_state,m4_led_a) +{ + m_led_extender = CARD_A; +} + +DRIVER_INIT_MEMBER(mpu4_state,m4_led_b) +{ + m_led_extender = CARD_B; +} + +DRIVER_INIT_MEMBER(mpu4_state,m4_led_c) +{ + m_led_extender = CARD_C; +} + +//TODO: Replace with standard six reels once sets are sorted out - is really six_reel_std +DRIVER_INIT_MEMBER(mpu4_state,m4altreels) +{ + m_reel_mux=SIX_REEL_1TO8; + m_reels = 6; + DRIVER_INIT_CALL(m4default_banks); +} +DRIVER_INIT_MEMBER(mpu4_state,m4default_reels) +{ + m_reel_mux=STANDARD_REEL; + m_reels = 4; +} + +DRIVER_INIT_MEMBER(mpu4_state,m4_five_reel_std) +{ + m_reel_mux=FIVE_REEL_5TO8; + m_reels = 5; +} + +DRIVER_INIT_MEMBER(mpu4_state,m4_five_reel_rev) +{ + m_reel_mux=FIVE_REEL_8TO5; + m_reels = 5; +} + +DRIVER_INIT_MEMBER(mpu4_state,m4_five_reel_alt) +{ + m_reel_mux=FIVE_REEL_3TO6; + m_reels = 5; +} + +DRIVER_INIT_MEMBER(mpu4_state,m4_six_reel_std) +{ + m_reel_mux=SIX_REEL_1TO8; + m_reels = 6; +} + +DRIVER_INIT_MEMBER(mpu4_state,m4_six_reel_alt) +{ + m_reel_mux=SIX_REEL_5TO8; + m_reels = 6; +} + +DRIVER_INIT_MEMBER(mpu4_state,m4_seven_reel) +{ + m_reel_mux=SEVEN_REEL; + m_reels = 7; +} + DRIVER_INIT_MEMBER(mpu4_state,m4_andycp10c) { @@ -2280,23 +2394,12 @@ DRIVER_INIT_MEMBER(mpu4_state,m4_andycp10c) DRIVER_INIT_MEMBER(mpu4_state,m_oldtmr) { - m_reel_mux=SIX_REEL_1TO8; - m_reels = 6; - + DRIVER_INIT_CALL(m4_six_reel_std); DRIVER_INIT_CALL(m4default_banks); m_current_chr_table = oldtmr_data; } -DRIVER_INIT_MEMBER(mpu4_state,m4altreels) -{ - m_reel_mux=SIX_REEL_1TO8; - m_reels = 6; - - DRIVER_INIT_CALL(m4default_banks); -} - - DRIVER_INIT_MEMBER(mpu4_state,m_ccelbr) { DRIVER_INIT_CALL(m4default); @@ -2311,8 +2414,7 @@ DRIVER_INIT_MEMBER(mpu4_state,m4gambal) DRIVER_INIT_MEMBER(mpu4_state,m_grtecp) { - m_reel_mux=FIVE_REEL_5TO8; - m_reels = 5; + DRIVER_INIT_CALL(m4_five_reel_std); DRIVER_INIT_CALL(m4_small_extender); DRIVER_INIT_CALL(m4default_banks); @@ -2322,19 +2424,12 @@ DRIVER_INIT_MEMBER(mpu4_state,m_grtecp) DRIVER_INIT_MEMBER(mpu4_state,m_blsbys) { m_bwb_bank=1; - m_reel_mux=FIVE_REEL_5TO8; - m_reels = 5; + DRIVER_INIT_CALL(m4_five_reel_std); m_bwb_chr_table1 = blsbys_data1; m_current_chr_table = blsbys_data; DRIVER_INIT_CALL(m4default_big); } -DRIVER_INIT_MEMBER(mpu4_state,m4default_reels) -{ - m_reel_mux=STANDARD_REEL; - m_reels = 4; - m_bwb_bank=0; -} DRIVER_INIT_MEMBER(mpu4_state,m4default_banks) { @@ -2356,6 +2451,7 @@ DRIVER_INIT_MEMBER(mpu4_state,m4default_alt) DRIVER_INIT_MEMBER(mpu4_state,m4default) { DRIVER_INIT_CALL(m4default_reels); + m_bwb_bank=0; DRIVER_INIT_CALL(m4default_banks); } @@ -2369,6 +2465,7 @@ DRIVER_INIT_MEMBER(mpu4_state,m4default_big) { printf("Error: Extended banking selected on set <=0x10000 in size, ignoring\n"); DRIVER_INIT_CALL(m4default_reels); + m_bwb_bank=0; DRIVER_INIT_CALL(m4default_banks); } else @@ -2451,12 +2548,14 @@ DRIVER_INIT_MEMBER(mpu4_state,crystali) /* generate a 50 Hz signal (based on an RC time) */ TIMER_DEVICE_CALLBACK_MEMBER(mpu4_state::gen_50hz) { - /* Although reported as a '50Hz' signal, the fact that both rising and - falling edges of the pulse are used means the timer actually gives a 100Hz - oscillating signal.*/ - m_signal_50hz = m_signal_50hz?0:1; - m_pia4->ca1_w(m_signal_50hz); /* signal is connected to IC4 CA1 */ - + if (!m_low_volt_detect_disable) + { + /* Although reported as a '50Hz' signal, the fact that both rising and + falling edges of the pulse are used means the timer actually gives a 100Hz + oscillating signal.*/ + m_signal_50hz = m_signal_50hz?0:1; + m_pia4->ca1_w(m_signal_50hz); /* signal is connected to IC4 CA1 */ + } update_meters();//run at 100Hz to sync with PIAs } @@ -2499,6 +2598,14 @@ ADDRESS_MAP_END MCFG_STEPPER_INDEX_PATTERN(0x00)\ MCFG_STEPPER_INIT_PHASE(2) +#define MCFG_MPU4_TYPE4_REEL_ADD(_tag)\ + MCFG_STEPPER_ADD(_tag)\ + MCFG_STEPPER_REEL_TYPE(BARCREST_48STEP_REEL)\ + MCFG_STEPPER_START_INDEX(93)\ + MCFG_STEPPER_END_INDEX(2)\ + MCFG_STEPPER_INDEX_PATTERN(0x00)\ + MCFG_STEPPER_INIT_PHASE(2) + #define MCFG_MPU4_BWB_REEL_ADD(_tag)\ MCFG_STEPPER_ADD(_tag)\ MCFG_STEPPER_REEL_TYPE(BARCREST_48STEP_REEL)\ @@ -2507,6 +2614,50 @@ ADDRESS_MAP_END MCFG_STEPPER_INDEX_PATTERN(0x00)\ MCFG_STEPPER_INIT_PHASE(2) +MACHINE_CONFIG_FRAGMENT( mpu4_std_3reel ) + MCFG_MPU4_STD_REEL_ADD("reel0") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel0_optic_cb)) + MCFG_MPU4_STD_REEL_ADD("reel1") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel1_optic_cb)) + MCFG_MPU4_STD_REEL_ADD("reel2") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel2_optic_cb)) +MACHINE_CONFIG_END + +MACHINE_CONFIG_FRAGMENT( mpu4_type2_3reel ) + MCFG_MPU4_TYPE2_REEL_ADD("reel0") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel0_optic_cb)) + MCFG_MPU4_TYPE2_REEL_ADD("reel1") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel1_optic_cb)) + MCFG_MPU4_TYPE2_REEL_ADD("reel2") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel2_optic_cb)) +MACHINE_CONFIG_END + +MACHINE_CONFIG_FRAGMENT( mpu4_type3_3reel ) + MCFG_MPU4_TYPE3_REEL_ADD("reel0") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel0_optic_cb)) + MCFG_MPU4_TYPE3_REEL_ADD("reel1") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel1_optic_cb)) + MCFG_MPU4_TYPE3_REEL_ADD("reel2") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel2_optic_cb)) +MACHINE_CONFIG_END + +MACHINE_CONFIG_FRAGMENT( mpu4_type4_3reel ) + MCFG_MPU4_TYPE4_REEL_ADD("reel0") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel0_optic_cb)) + MCFG_MPU4_TYPE4_REEL_ADD("reel1") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel1_optic_cb)) + MCFG_MPU4_TYPE4_REEL_ADD("reel2") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel2_optic_cb)) +MACHINE_CONFIG_END + +MACHINE_CONFIG_FRAGMENT( mpu4_bwb_3reel ) + MCFG_MPU4_BWB_REEL_ADD("reel0") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel0_optic_cb)) + MCFG_MPU4_BWB_REEL_ADD("reel1") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel1_optic_cb)) + MCFG_MPU4_BWB_REEL_ADD("reel2") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel2_optic_cb)) +MACHINE_CONFIG_END MACHINE_CONFIG_FRAGMENT( mpu4_std_4reel ) MCFG_MPU4_STD_REEL_ADD("reel0") @@ -2519,6 +2670,50 @@ MACHINE_CONFIG_FRAGMENT( mpu4_std_4reel ) MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel3_optic_cb)) MACHINE_CONFIG_END +MACHINE_CONFIG_FRAGMENT( mpu4_type2_4reel ) + MCFG_MPU4_TYPE2_REEL_ADD("reel0") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel0_optic_cb)) + MCFG_MPU4_TYPE2_REEL_ADD("reel1") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel1_optic_cb)) + MCFG_MPU4_TYPE2_REEL_ADD("reel2") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel2_optic_cb)) + MCFG_MPU4_TYPE2_REEL_ADD("reel3") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel3_optic_cb)) +MACHINE_CONFIG_END + +MACHINE_CONFIG_FRAGMENT( mpu4_type3_4reel ) + MCFG_MPU4_TYPE3_REEL_ADD("reel0") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel0_optic_cb)) + MCFG_MPU4_TYPE3_REEL_ADD("reel1") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel1_optic_cb)) + MCFG_MPU4_TYPE3_REEL_ADD("reel2") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel2_optic_cb)) + MCFG_MPU4_TYPE3_REEL_ADD("reel3") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel3_optic_cb)) +MACHINE_CONFIG_END + +MACHINE_CONFIG_FRAGMENT( mpu4_type4_4reel ) + MCFG_MPU4_TYPE4_REEL_ADD("reel0") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel0_optic_cb)) + MCFG_MPU4_TYPE4_REEL_ADD("reel1") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel1_optic_cb)) + MCFG_MPU4_TYPE4_REEL_ADD("reel2") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel2_optic_cb)) + MCFG_MPU4_TYPE4_REEL_ADD("reel3") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel3_optic_cb)) +MACHINE_CONFIG_END + +MACHINE_CONFIG_FRAGMENT( mpu4_bwb_4reel ) + MCFG_MPU4_BWB_REEL_ADD("reel0") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel0_optic_cb)) + MCFG_MPU4_BWB_REEL_ADD("reel1") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel1_optic_cb)) + MCFG_MPU4_BWB_REEL_ADD("reel2") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel2_optic_cb)) + MCFG_MPU4_BWB_REEL_ADD("reel3") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel3_optic_cb)) +MACHINE_CONFIG_END + MACHINE_CONFIG_FRAGMENT( mpu4_std_5reel ) MCFG_MPU4_STD_REEL_ADD("reel0") MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel0_optic_cb)) @@ -2532,6 +2727,58 @@ MACHINE_CONFIG_FRAGMENT( mpu4_std_5reel ) MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel4_optic_cb)) MACHINE_CONFIG_END +MACHINE_CONFIG_FRAGMENT( mpu4_type2_5reel ) + MCFG_MPU4_TYPE2_REEL_ADD("reel0") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel0_optic_cb)) + MCFG_MPU4_TYPE2_REEL_ADD("reel1") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel1_optic_cb)) + MCFG_MPU4_TYPE2_REEL_ADD("reel2") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel2_optic_cb)) + MCFG_MPU4_TYPE2_REEL_ADD("reel3") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel3_optic_cb)) + MCFG_MPU4_TYPE2_REEL_ADD("reel4") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel4_optic_cb)) +MACHINE_CONFIG_END + +MACHINE_CONFIG_FRAGMENT( mpu4_type3_5reel ) + MCFG_MPU4_TYPE3_REEL_ADD("reel0") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel0_optic_cb)) + MCFG_MPU4_TYPE3_REEL_ADD("reel1") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel1_optic_cb)) + MCFG_MPU4_TYPE3_REEL_ADD("reel2") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel2_optic_cb)) + MCFG_MPU4_TYPE3_REEL_ADD("reel3") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel3_optic_cb)) + MCFG_MPU4_TYPE3_REEL_ADD("reel4") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel4_optic_cb)) +MACHINE_CONFIG_END + +MACHINE_CONFIG_FRAGMENT( mpu4_type4_5reel ) + MCFG_MPU4_TYPE4_REEL_ADD("reel0") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel0_optic_cb)) + MCFG_MPU4_TYPE4_REEL_ADD("reel1") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel1_optic_cb)) + MCFG_MPU4_TYPE4_REEL_ADD("reel2") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel2_optic_cb)) + MCFG_MPU4_TYPE4_REEL_ADD("reel3") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel3_optic_cb)) + MCFG_MPU4_TYPE4_REEL_ADD("reel4") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel4_optic_cb)) +MACHINE_CONFIG_END + +MACHINE_CONFIG_FRAGMENT( mpu4_bwb_5reel ) + MCFG_MPU4_BWB_REEL_ADD("reel0") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel0_optic_cb)) + MCFG_MPU4_BWB_REEL_ADD("reel1") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel1_optic_cb)) + MCFG_MPU4_BWB_REEL_ADD("reel2") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel2_optic_cb)) + MCFG_MPU4_BWB_REEL_ADD("reel3") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel3_optic_cb)) + MCFG_MPU4_BWB_REEL_ADD("reel4") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel4_optic_cb)) +MACHINE_CONFIG_END + MACHINE_CONFIG_FRAGMENT( mpu4_std_6reel ) MCFG_MPU4_STD_REEL_ADD("reel0") MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel0_optic_cb)) @@ -2562,8 +2809,37 @@ MACHINE_CONFIG_FRAGMENT( mpu4_type2_6reel ) MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel5_optic_cb)) MACHINE_CONFIG_END +MACHINE_CONFIG_FRAGMENT( mpu4_type3_6reel ) + MCFG_MPU4_TYPE3_REEL_ADD("reel0") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel0_optic_cb)) + MCFG_MPU4_TYPE3_REEL_ADD("reel1") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel1_optic_cb)) + MCFG_MPU4_TYPE3_REEL_ADD("reel2") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel2_optic_cb)) + MCFG_MPU4_TYPE3_REEL_ADD("reel3") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel3_optic_cb)) + MCFG_MPU4_TYPE3_REEL_ADD("reel4") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel4_optic_cb)) + MCFG_MPU4_TYPE3_REEL_ADD("reel5") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel5_optic_cb)) +MACHINE_CONFIG_END -MACHINE_CONFIG_FRAGMENT( mpu4_bwb_5reel ) +MACHINE_CONFIG_FRAGMENT( mpu4_type4_6reel ) + MCFG_MPU4_TYPE4_REEL_ADD("reel0") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel0_optic_cb)) + MCFG_MPU4_TYPE4_REEL_ADD("reel1") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel1_optic_cb)) + MCFG_MPU4_TYPE4_REEL_ADD("reel2") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel2_optic_cb)) + MCFG_MPU4_TYPE4_REEL_ADD("reel3") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel3_optic_cb)) + MCFG_MPU4_TYPE4_REEL_ADD("reel4") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel4_optic_cb)) + MCFG_MPU4_TYPE4_REEL_ADD("reel5") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel5_optic_cb)) +MACHINE_CONFIG_END + +MACHINE_CONFIG_FRAGMENT( mpu4_bwb_6reel ) MCFG_MPU4_BWB_REEL_ADD("reel0") MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel0_optic_cb)) MCFG_MPU4_BWB_REEL_ADD("reel1") @@ -2574,9 +2850,50 @@ MACHINE_CONFIG_FRAGMENT( mpu4_bwb_5reel ) MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel3_optic_cb)) MCFG_MPU4_BWB_REEL_ADD("reel4") MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel4_optic_cb)) + MCFG_MPU4_BWB_REEL_ADD("reel5") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel5_optic_cb)) MACHINE_CONFIG_END -MACHINE_CONFIG_FRAGMENT( mpu4_alt_7reel ) + +MACHINE_CONFIG_FRAGMENT( mpu4_std_7reel ) + MCFG_MPU4_STD_REEL_ADD("reel0") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel0_optic_cb)) + MCFG_MPU4_STD_REEL_ADD("reel1") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel1_optic_cb)) + MCFG_MPU4_STD_REEL_ADD("reel2") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel2_optic_cb)) + MCFG_MPU4_STD_REEL_ADD("reel3") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel3_optic_cb)) + MCFG_MPU4_STD_REEL_ADD("reel4") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel4_optic_cb)) + MCFG_MPU4_STD_REEL_ADD("reel5") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel5_optic_cb)) + MCFG_MPU4_STD_REEL_ADD("reel6") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel6_optic_cb)) + MCFG_MPU4_STD_REEL_ADD("reel7") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel7_optic_cb)) +MACHINE_CONFIG_END + +MACHINE_CONFIG_FRAGMENT( mpu4_type2_7reel ) + MCFG_MPU4_TYPE2_REEL_ADD("reel0") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel0_optic_cb)) + MCFG_MPU4_TYPE2_REEL_ADD("reel1") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel1_optic_cb)) + MCFG_MPU4_TYPE2_REEL_ADD("reel2") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel2_optic_cb)) + MCFG_MPU4_TYPE2_REEL_ADD("reel3") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel3_optic_cb)) + MCFG_MPU4_TYPE2_REEL_ADD("reel4") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel4_optic_cb)) + MCFG_MPU4_TYPE2_REEL_ADD("reel5") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel5_optic_cb)) + MCFG_MPU4_TYPE2_REEL_ADD("reel6") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel6_optic_cb)) + MCFG_MPU4_TYPE2_REEL_ADD("reel7") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel7_optic_cb)) +MACHINE_CONFIG_END + +MACHINE_CONFIG_FRAGMENT( mpu4_type3_7reel ) MCFG_MPU4_TYPE3_REEL_ADD("reel0") MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel0_optic_cb)) MCFG_MPU4_TYPE3_REEL_ADD("reel1") @@ -2595,6 +2912,44 @@ MACHINE_CONFIG_FRAGMENT( mpu4_alt_7reel ) MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel7_optic_cb)) MACHINE_CONFIG_END +MACHINE_CONFIG_FRAGMENT( mpu4_type4_7reel ) + MCFG_MPU4_TYPE4_REEL_ADD("reel0") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel0_optic_cb)) + MCFG_MPU4_TYPE4_REEL_ADD("reel1") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel1_optic_cb)) + MCFG_MPU4_TYPE4_REEL_ADD("reel2") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel2_optic_cb)) + MCFG_MPU4_TYPE4_REEL_ADD("reel3") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel3_optic_cb)) + MCFG_MPU4_TYPE4_REEL_ADD("reel4") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel4_optic_cb)) + MCFG_MPU4_TYPE4_REEL_ADD("reel5") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel5_optic_cb)) + MCFG_MPU4_TYPE4_REEL_ADD("reel6") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel6_optic_cb)) + MCFG_MPU4_TYPE4_REEL_ADD("reel7") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel7_optic_cb)) +MACHINE_CONFIG_END + +MACHINE_CONFIG_FRAGMENT( mpu4_bwb_7reel ) + MCFG_MPU4_BWB_REEL_ADD("reel0") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel0_optic_cb)) + MCFG_MPU4_BWB_REEL_ADD("reel1") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel1_optic_cb)) + MCFG_MPU4_BWB_REEL_ADD("reel2") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel2_optic_cb)) + MCFG_MPU4_BWB_REEL_ADD("reel3") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel3_optic_cb)) + MCFG_MPU4_BWB_REEL_ADD("reel4") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel4_optic_cb)) + MCFG_MPU4_BWB_REEL_ADD("reel5") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel5_optic_cb)) + MCFG_MPU4_BWB_REEL_ADD("reel6") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel6_optic_cb)) + MCFG_MPU4_BWB_REEL_ADD("reel7") + MCFG_STEPPER_OPTIC_CALLBACK(WRITELINE(mpu4_state, reel7_optic_cb)) +MACHINE_CONFIG_END + MACHINE_CONFIG_FRAGMENT( mpu4_common ) MCFG_TIMER_DRIVER_ADD_PERIODIC("50hz", mpu4_state, gen_50hz, attotime::from_hz(100)) diff --git a/src/mame/includes/mpu4.h b/src/mame/includes/mpu4.h index c31c00beaab..e2d63592d68 100644 --- a/src/mame/includes/mpu4.h +++ b/src/mame/includes/mpu4.h @@ -51,6 +51,7 @@ static const UINT8 reel_mux_table7[8]= {3,1,5,6,4,2,0,7}; static const UINT8 bwb_chr_table_common[10]= {0x00,0x04,0x04,0x0c,0x0c,0x1c,0x14,0x2c,0x5c,0x2c}; +//reel info #define STANDARD_REEL 0 // As originally designed 3/4 reels #define FIVE_REEL_5TO8 1 // Interfaces to meter port, allows some mechanical metering, but there is significant 'bounce' in the extra reel #define FIVE_REEL_8TO5 2 // Mounted backwards for space reasons, but different board @@ -60,16 +61,19 @@ static const UINT8 bwb_chr_table_common[10]= {0x00,0x04,0x04,0x0c,0x0c,0x1c,0x14 #define SEVEN_REEL 6 // Mainly club machines, significant reworking of reel hardware #define FLUTTERBOX 7 // Will you start the fans, please! A fan using a reel mux-like setup, but not actually a reel +//Lamp extension #define NO_EXTENDER 0 // As originally designed #define SMALL_CARD 1 #define LARGE_CARD_A 2 //96 Lamps #define LARGE_CARD_B 3 //96 Lamps, 16 LEDs - as used by BwB #define LARGE_CARD_C 4 //Identical to B, no built in LED support +//LED cards #define CARD_A 1 #define CARD_B 2 #define CARD_C 3 +//Hopper info #define TUBES 0 #define HOPPER_DUART_A 1 #define HOPPER_DUART_B 2 @@ -185,7 +189,26 @@ public: DECLARE_DRIVER_INIT(m4default); DECLARE_DRIVER_INIT(m4default_banks); DECLARE_DRIVER_INIT(m4default_reels); + DECLARE_DRIVER_INIT(m4_low_volt_alt); + DECLARE_DRIVER_INIT(m4_five_reel_std); + DECLARE_DRIVER_INIT(m4_five_reel_rev); + DECLARE_DRIVER_INIT(m4_five_reel_alt); + DECLARE_DRIVER_INIT(m4_six_reel_std); + DECLARE_DRIVER_INIT(m4_six_reel_alt); + DECLARE_DRIVER_INIT(m4_seven_reel); DECLARE_DRIVER_INIT(m4_small_extender); + DECLARE_DRIVER_INIT(m4_large_extender_a); + DECLARE_DRIVER_INIT(m4_large_extender_b); + DECLARE_DRIVER_INIT(m4_large_extender_c); + DECLARE_DRIVER_INIT(m4_hopper_tubes); + DECLARE_DRIVER_INIT(m4_hopper_duart_a); + DECLARE_DRIVER_INIT(m4_hopper_duart_b); + DECLARE_DRIVER_INIT(m4_hopper_duart_c); + DECLARE_DRIVER_INIT(m4_hopper_nonduart_a); + DECLARE_DRIVER_INIT(m4_hopper_nonduart_b); + DECLARE_DRIVER_INIT(m4_led_a); + DECLARE_DRIVER_INIT(m4_led_b); + DECLARE_DRIVER_INIT(m4_led_c); DECLARE_DRIVER_INIT(m4_andycp10c); DECLARE_DRIVER_INIT(m_blsbys); DECLARE_DRIVER_INIT(m_oldtmr); @@ -201,7 +224,7 @@ public: DECLARE_DRIVER_INIT(m4_showstring_big); DECLARE_DRIVER_INIT(m_grtecpss); DECLARE_DRIVER_INIT(connect4); - DECLARE_DRIVER_INIT(m4altreels); + DECLARE_DRIVER_INIT(m4altreels);//legacy, will be removed once things are sorted out DECLARE_MACHINE_START(mod2); DECLARE_MACHINE_RESET(mpu4); DECLARE_MACHINE_START(mpu4yam); @@ -287,6 +310,7 @@ protected: int m_ic23_active; int m_led_lamp; int m_link7a_connected; + int m_low_volt_detect_disable; emu_timer *m_ic24_timer; int m_expansion_latch; int m_global_volume;