mirror of
https://github.com/holub/mame
synced 2025-07-05 18:08:04 +03:00
barcrest/mpu4*: Refactoring and functionality additions. (#10002)
* Added the ability to override the lamp current checks (will fix Lamp Drive errors) - Connect4 no longer requires a lamping hack. * Replaced data logger with serial loopback for systems that expect this.
This commit is contained in:
parent
1a79bbb5e7
commit
ed27efc34c
@ -519,6 +519,16 @@ void mpu4_state::pia_ic3_porta_w(uint8_t data)
|
||||
// As a consequence, the lamp column data can change before the input strobe without
|
||||
// causing the relevant lamps to black out.
|
||||
|
||||
if (m_overcurrent_detect)
|
||||
{
|
||||
m_overcurrent = true;
|
||||
}
|
||||
|
||||
if (m_undercurrent_detect)
|
||||
{
|
||||
m_undercurrent = true;
|
||||
}
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
m_lamps[(8*m_input_strobe)+i] = BIT(data, i);
|
||||
@ -537,6 +547,16 @@ void mpu4_state::pia_ic3_portb_w(uint8_t data)
|
||||
{
|
||||
if (m_lamp_strobe2 != m_input_strobe)
|
||||
{
|
||||
if (m_overcurrent_detect)
|
||||
{
|
||||
m_overcurrent = true;
|
||||
}
|
||||
|
||||
if (m_undercurrent_detect)
|
||||
{
|
||||
m_undercurrent = true;
|
||||
}
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
m_lamps[(8*m_input_strobe)+i+64] = BIT(data, i);
|
||||
@ -544,24 +564,6 @@ void mpu4_state::pia_ic3_portb_w(uint8_t data)
|
||||
m_lamp_strobe2 = m_input_strobe;
|
||||
}
|
||||
|
||||
if (m_led_lamp)
|
||||
{
|
||||
/* Some games (like Connect 4) use 'programmable' LED displays, built from light display lines in section 2. */
|
||||
/* These are mostly low-tech machines, where such wiring proved cheaper than an extender card */
|
||||
uint8_t pled_segs[2] = {0,0};
|
||||
|
||||
static const int lamps1[8] = { 106, 107, 108, 109, 104, 105, 110, 111 };
|
||||
static const int lamps2[8] = { 114, 115, 116, 117, 112, 113, 118, 119 };
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
if (m_lamps[lamps1[i]]) pled_segs[0] |= (1 << i);
|
||||
if (m_lamps[lamps2[i]]) pled_segs[1] |= (1 << i);
|
||||
}
|
||||
|
||||
m_digits[8] = pled_segs[0];
|
||||
m_digits[9] = pled_segs[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -635,7 +637,7 @@ void mpu4_state::ic24_setup()
|
||||
{
|
||||
double duration = TIME_OF_74LS123((220*1000),(0.1*0.000001));
|
||||
{
|
||||
m_ic23_active=1;
|
||||
m_ic23_active=true;
|
||||
ic24_output(0);
|
||||
m_ic24_timer->adjust(attotime::from_double(duration));
|
||||
}
|
||||
@ -645,14 +647,13 @@ void mpu4_state::ic24_setup()
|
||||
|
||||
TIMER_CALLBACK_MEMBER(mpu4_state::update_ic24)
|
||||
{
|
||||
m_ic23_active=0;
|
||||
m_ic23_active=false;
|
||||
ic24_output(1);
|
||||
}
|
||||
|
||||
|
||||
WRITE_LINE_MEMBER(mpu4_state::dataport_rxd)
|
||||
{
|
||||
m_serial_data = state;
|
||||
m_pia4->cb1_w(state);
|
||||
LOG_IC3(("Dataport RX %x\n",state));
|
||||
}
|
||||
@ -697,7 +698,9 @@ void mpu4_state::pia_ic4_portb_w(uint8_t data)
|
||||
|
||||
uint8_t mpu4_state::pia_ic4_portb_r()
|
||||
{
|
||||
if ( m_serial_data )
|
||||
m_ic4_input_b = 0x00;
|
||||
|
||||
if (m_pia5->ca2_output())
|
||||
{
|
||||
m_ic4_input_b |= 0x80;
|
||||
}
|
||||
@ -735,17 +738,15 @@ uint8_t mpu4_state::pia_ic4_portb_r()
|
||||
if ( m_signal_50hz ) m_ic4_input_b |= 0x04; /* 50 Hz */
|
||||
else m_ic4_input_b &= ~0x04;
|
||||
|
||||
if (m_ic4_input_b & 0x02)
|
||||
if ( m_overcurrent )
|
||||
{
|
||||
m_ic4_input_b &= ~0x02;
|
||||
m_ic4_input_b |= 0x02;
|
||||
}
|
||||
else
|
||||
|
||||
if ( m_undercurrent )
|
||||
{
|
||||
m_ic4_input_b |= 0x02; //Pulse the overcurrent line with every read to show the CPU each lamp has lit
|
||||
m_ic4_input_b |= 0x01;
|
||||
}
|
||||
#if 0
|
||||
if ( lamp_undercurrent ) m_ic4_input_b |= 0x01;
|
||||
#endif
|
||||
|
||||
LOG_IC3(("%s: IC4 PIA Read of Port B %x\n",machine().describe_context(),m_ic4_input_b));
|
||||
return m_ic4_input_b;
|
||||
@ -771,13 +772,16 @@ uint8_t mpu4_state::pia_ic5_porta_r()
|
||||
{
|
||||
if (m_lamp_extender == LARGE_CARD_A)
|
||||
{
|
||||
if (m_lamp_sense && m_ic23_active)
|
||||
if (m_overcurrent_detect)
|
||||
{
|
||||
m_aux1_input |= 0x40;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_aux1_input &= ~0x40; //Pulse the overcurrent line with every read to show the CPU each lamp has lit
|
||||
if (m_lamp_sense && m_ic23_active)
|
||||
{
|
||||
m_aux1_input |= 0x40;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_aux1_input &= ~0x40; //Pulse the overcurrent line with every read to show the CPU each lamp has lit
|
||||
}
|
||||
}
|
||||
}
|
||||
if (m_hopper == HOPPER_NONDUART_A)
|
||||
@ -921,13 +925,6 @@ uint8_t mpu4_state::pia_ic5_portb_r()
|
||||
}
|
||||
|
||||
|
||||
WRITE_LINE_MEMBER(mpu4_state::pia_ic5_ca2_w)
|
||||
{
|
||||
LOG(("%s: IC5 PIA Write CA2 (Serial Tx) %2x\n",machine().describe_context(),state));
|
||||
m_dataport->write_txd(state);
|
||||
}
|
||||
|
||||
|
||||
/* ---------------------------------------
|
||||
AY Chip sound function selection -
|
||||
---------------------------------------
|
||||
@ -1901,7 +1898,7 @@ MACHINE_START_MEMBER(mpu4_state,mod2)
|
||||
{
|
||||
mpu4_config_common();
|
||||
|
||||
m_link7a_connected=0;
|
||||
m_link7a_connected=false;
|
||||
m_mod_number=2;
|
||||
}
|
||||
|
||||
@ -1910,7 +1907,7 @@ MACHINE_START_MEMBER(mpu4_state,mpu4yam)
|
||||
address_space &space = m_maincpu->space(AS_PROGRAM);
|
||||
mpu4_config_common();
|
||||
|
||||
m_link7a_connected=0;
|
||||
m_link7a_connected=false;
|
||||
m_mod_number=4;
|
||||
mpu4_install_mod4yam_space(space);
|
||||
}
|
||||
@ -1920,7 +1917,7 @@ MACHINE_START_MEMBER(mpu4_state,mpu4oki)
|
||||
address_space &space = m_maincpu->space(AS_PROGRAM);
|
||||
mpu4_config_common();
|
||||
|
||||
m_link7a_connected=0;
|
||||
m_link7a_connected=false;
|
||||
m_mod_number=4;
|
||||
mpu4_install_mod4oki_space(space);
|
||||
}
|
||||
@ -2163,7 +2160,7 @@ void mpu4_state::use_m4_seven_reel()
|
||||
void mpu4_state::use_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;
|
||||
m_low_volt_detect = false;
|
||||
}
|
||||
|
||||
void mpu4_state::use_m4_small_extender()
|
||||
@ -2242,7 +2239,7 @@ void mpu4_state::setup_rom_banks()
|
||||
/* generate a 50 Hz signal (based on an RC time) */
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(mpu4_state::gen_50hz)
|
||||
{
|
||||
if (!m_low_volt_detect_disable)
|
||||
if (m_low_volt_detect)
|
||||
{
|
||||
/* 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
|
||||
@ -2325,7 +2322,7 @@ void mpu4_state::mpu4_common(machine_config &config)
|
||||
m_pia5->readpb_handler().set(FUNC(mpu4_state::pia_ic5_portb_r));
|
||||
m_pia5->writepa_handler().set(FUNC(mpu4_state::pia_ic5_porta_w));
|
||||
m_pia5->writepb_handler().set(FUNC(mpu4_state::pia_ic5_portb_w));
|
||||
m_pia5->ca2_handler().set(FUNC(mpu4_state::pia_ic5_ca2_w));
|
||||
m_pia5->ca2_handler().set(m_dataport, FUNC(bacta_datalogger_device::write_txd));
|
||||
m_pia5->cb2_handler().set(FUNC(mpu4_state::pia_ic5_cb2_w));
|
||||
m_pia5->irqa_handler().set(FUNC(mpu4_state::cpu0_irq));
|
||||
m_pia5->irqb_handler().set(FUNC(mpu4_state::cpu0_irq));
|
||||
@ -2421,6 +2418,13 @@ void mpu4_state::mod2(machine_config &config)
|
||||
mpu4_reels<0, 6>(config);
|
||||
}
|
||||
|
||||
void mpu4_state::mod2_no_bacta(machine_config &config)
|
||||
{
|
||||
mod2(config);
|
||||
config.device_remove("dataport");
|
||||
m_pia5->ca2_handler().set(m_pia4, FUNC(pia6821_device::cb1_w));
|
||||
}
|
||||
|
||||
void mpu4_state::mod2_7reel(machine_config &config)
|
||||
{
|
||||
mpu4base(config);
|
||||
@ -2530,6 +2534,13 @@ void mpu4_state::mod4yam(machine_config &config)
|
||||
m_ym2413->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
|
||||
}
|
||||
|
||||
void mpu4_state::mod4yam_no_bacta(machine_config &config)
|
||||
{
|
||||
mod4yam(config);
|
||||
config.device_remove("dataport");
|
||||
m_pia5->ca2_handler().set(m_pia4, FUNC(pia6821_device::cb1_w));
|
||||
}
|
||||
|
||||
void mpu4_state::mod4yam_chr(machine_config &config)
|
||||
{
|
||||
mod4yam(config);
|
||||
@ -2603,6 +2614,13 @@ void mpu4_state::mod4oki(machine_config &config)
|
||||
m_msm6376->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
|
||||
}
|
||||
|
||||
void mpu4_state::mod4oki_no_bacta(machine_config &config)
|
||||
{
|
||||
mod4oki(config);
|
||||
config.device_remove("dataport");
|
||||
m_pia5->ca2_handler().set(m_pia4, FUNC(pia6821_device::cb1_w));
|
||||
}
|
||||
|
||||
void mpu4_state::mod4oki_7reel(machine_config &config)
|
||||
{
|
||||
mpu4base(config);
|
||||
|
@ -179,6 +179,7 @@ public:
|
||||
void init_m4default_seven();
|
||||
|
||||
void mod2(machine_config &config);
|
||||
void mod2_no_bacta(machine_config &config);
|
||||
void mod2_7reel(machine_config &config);
|
||||
|
||||
void mod2_cheatchr(machine_config &config);
|
||||
@ -416,12 +417,14 @@ public:
|
||||
void mod4oki_alt_cheatchr_table(machine_config& config, const uint8_t* table);
|
||||
|
||||
void mod4oki(machine_config &config);
|
||||
void mod4oki_no_bacta(machine_config &config);
|
||||
void mod4oki_7reel(machine_config &config);
|
||||
void mod4oki_cheatchr(machine_config &config);
|
||||
void mod4oki_cheatchr_table(machine_config &config, const uint8_t* table);
|
||||
void mod4oki_chr(machine_config &config);
|
||||
|
||||
void mod4yam(machine_config &config);
|
||||
void mod4yam_no_bacta(machine_config &config);
|
||||
void mod4yam_7reel(machine_config &config);
|
||||
void mod4yam_cheatchr(machine_config &config);
|
||||
void mod4yam_cheatchr_table(machine_config& config, const uint8_t* table);
|
||||
@ -434,6 +437,7 @@ public:
|
||||
void mpu4_common(machine_config &config);
|
||||
void mpu4_common2(machine_config &config);
|
||||
void mpu4base(machine_config &config);
|
||||
void mpu4_bacta(machine_config &config);
|
||||
|
||||
protected:
|
||||
|
||||
@ -514,7 +518,6 @@ protected:
|
||||
void pia_ic5_porta_w(uint8_t data);
|
||||
void pia_ic5_portb_w(uint8_t data);
|
||||
uint8_t pia_ic5_portb_r();
|
||||
DECLARE_WRITE_LINE_MEMBER(pia_ic5_ca2_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(pia_ic5_cb2_w);
|
||||
void pia_ic6_portb_w(uint8_t data);
|
||||
void pia_ic6_porta_w(uint8_t data);
|
||||
@ -578,7 +581,7 @@ protected:
|
||||
// 0-63 are on PIA IC3 port A (always present)
|
||||
// 64-127 are on PIA IC3 port B (always present)
|
||||
// 128-132 136-140 144-148 152-156 160-164 168-172 176-180 184-188 are on small lamp extender
|
||||
// 128-255 are on large lamp externders
|
||||
// 128-255 are on large lamp extenders
|
||||
output_finder<256> m_lamps;
|
||||
|
||||
// 0-63 are on PIA IC4 port A (always present)
|
||||
@ -599,7 +602,6 @@ protected:
|
||||
int m_mod_number = 0;
|
||||
int m_mmtr_data = 0;
|
||||
int m_ay8913_address = 0;
|
||||
int m_serial_data = 0;
|
||||
int m_signal_50hz = 0;
|
||||
int m_ic4_input_b = 0;
|
||||
int m_aux1_input = 0;
|
||||
@ -612,10 +614,7 @@ protected:
|
||||
int m_IC23GA = 0;
|
||||
|
||||
int m_reel_flag = 0;
|
||||
int m_ic23_active = 0;
|
||||
int m_led_lamp = 0;
|
||||
int m_link7a_connected = 0;
|
||||
int m_low_volt_detect_disable = 0;
|
||||
bool m_ic23_active = false;
|
||||
emu_timer *m_ic24_timer = nullptr;
|
||||
int m_expansion_latch = 0;
|
||||
int m_global_volume = 0;
|
||||
@ -650,6 +649,17 @@ protected:
|
||||
int m_t3h = 0;
|
||||
uint8_t m_numbanks = 0;
|
||||
|
||||
bool m_link7a_connected = false;
|
||||
|
||||
bool m_overcurrent = false;
|
||||
bool m_undercurrent = false;
|
||||
|
||||
bool m_overcurrent_detect = true;
|
||||
bool m_undercurrent_detect = false;
|
||||
|
||||
bool m_low_volt_detect = true;
|
||||
|
||||
|
||||
static constexpr uint8_t reel_mux_table[8]= {0,4,2,6,1,5,3,7};//include 7, although I don't think it's used, this is basically a wire swap
|
||||
static constexpr uint8_t reel_mux_table7[8]= {3,1,5,6,4,2,0,7};
|
||||
};
|
||||
|
@ -116,7 +116,7 @@ MACHINE_START_MEMBER(mpu4bwb_machines_state,mpu4bwb)
|
||||
address_space &space = m_maincpu->space(AS_PROGRAM);
|
||||
mpu4_config_common();
|
||||
|
||||
m_link7a_connected=0;
|
||||
m_link7a_connected=false;
|
||||
m_mod_number=4;
|
||||
mpu4_install_mod4bwb_space(space);
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ MACHINE_START_MEMBER(mpu4crystal_machines_state,mpu4cry)
|
||||
{
|
||||
mpu4_config_common();
|
||||
|
||||
m_link7a_connected=0;
|
||||
m_link7a_connected=false;
|
||||
m_mod_number=4;
|
||||
}
|
||||
|
||||
|
@ -49,50 +49,30 @@ public:
|
||||
void mpu4mod2_machines_state::init_connect4()
|
||||
{
|
||||
m_reels = 0; //reel-free game
|
||||
m_led_lamp = 1;
|
||||
m_overcurrent_detect = true;
|
||||
setup_rom_banks();
|
||||
}
|
||||
|
||||
|
||||
INPUT_PORTS_START( connect4 )
|
||||
PORT_START("ORANGE1")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("00")
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("01")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("02")
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("03")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("04")
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("05")
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("06")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("07")
|
||||
PORT_BIT(0xFF, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
|
||||
PORT_START("ORANGE2")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("08")
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("09")
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("10")
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("11")
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("12")
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("13")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("14")
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("15")
|
||||
PORT_BIT(0xFF, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
|
||||
PORT_START("BLACK1")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("16")
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("17")
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("18")
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("19")
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("20")
|
||||
PORT_BIT(0x1F, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_SERVICE) PORT_NAME("Test Switch")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_SERVICE) PORT_NAME("Refill Key") PORT_CODE(KEYCODE_R) PORT_TOGGLE
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Door Switch?") PORT_TOGGLE
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_INTERLOCK) PORT_NAME("Cashbox (Back) Door") PORT_CODE(KEYCODE_Q) PORT_TOGGLE
|
||||
|
||||
PORT_START("BLACK2")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_NAME("Select")
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("25")
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_START2) PORT_NAME("Pass")
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_START1) PORT_NAME("Play")
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("28")
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("29")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("30")
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_START2) PORT_NAME("Pass / Collect")
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_START1) PORT_NAME("Play / Continue")
|
||||
PORT_BIT(0x70, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_NAME("Drop")
|
||||
|
||||
PORT_START("DIL1")
|
||||
@ -148,14 +128,7 @@ INPUT_PORTS_START( connect4 )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
|
||||
|
||||
PORT_START("AUX1")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("0")
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("1")
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("2")
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("3")
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("4")
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("5")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("6")
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("7")
|
||||
PORT_BIT(0xFF, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
|
||||
PORT_START("AUX2")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_CUSTOM)
|
||||
|
@ -17,6 +17,7 @@ public:
|
||||
}
|
||||
|
||||
void init_m4addr();
|
||||
void init_m4test4();
|
||||
|
||||
void mod4yam_cheatchr_gambal(machine_config &config);
|
||||
|
||||
@ -74,6 +75,11 @@ void mpu4mod4yam_machines_state::init_m4addr()
|
||||
//Front door code 0 Cash door code 0
|
||||
}
|
||||
|
||||
void mpu4mod4yam_machines_state::init_m4test4()
|
||||
{
|
||||
init_m4default();
|
||||
m_overcurrent_detect = true;
|
||||
}
|
||||
|
||||
|
||||
INPUT_PORTS_START( m4addr )
|
||||
@ -1525,14 +1531,13 @@ ROM_START( m4voodoo )
|
||||
ROM_LOAD( "ddo32", 0x0000, 0x010000, CRC(260dfef1) SHA1(2b4918e40808963a86d289cd251740a9b0bed70a) )
|
||||
ROM_END
|
||||
|
||||
|
||||
ROM_START( m4magdrg )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
ROM_LOAD( "dmd10.bin", 0x0000, 0x010000, CRC(9cc4f2f8) SHA1(46a90ffa18d35ad2b06542f91120c02bc34f0c40) )
|
||||
ROM_END
|
||||
|
||||
|
||||
GAME(198?, m4tst, 0, mod4yam, mpu4, mpu4mod4yam_machines_state, init_m4default, ROT0,"Barcrest","MPU4 Unit Test (Program 4)",MACHINE_MECHANICAL )
|
||||
GAME(198?, m4tst, 0, mod4yam_no_bacta, mpu4, mpu4mod4yam_machines_state, init_m4test4, ROT0,"Barcrest","MPU4 Unit Test (Program 4)",MACHINE_MECHANICAL )
|
||||
|
||||
GAME(199?, m4joljokd, 0, mod4yam_cheatchr_pal<mpu4_characteriser_pal::celclb_characteriser_prot>, mpu4, mpu4mod4yam_machines_state, init_m4default, ROT0, "Barcrest","Jolly Joker (Barcrest) (Dutch) (MPU4) (DJJ 1.5)",GAME_FLAGS) // Geen Tubes
|
||||
|
||||
|
@ -30,9 +30,14 @@ public:
|
||||
}
|
||||
|
||||
void init_m4aao();
|
||||
void init_m4test();
|
||||
};
|
||||
|
||||
|
||||
void mpu4unsorted_state::init_m4test()
|
||||
{
|
||||
init_m4default();
|
||||
m_overcurrent_detect = true;
|
||||
}
|
||||
|
||||
#include "m4aao.lh"
|
||||
|
||||
@ -1465,9 +1470,9 @@ ROM_END
|
||||
|
||||
|
||||
/* Barcrest */
|
||||
GAME( 198?, m4tst2, 0, mod2, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Barcrest","MPU4 Unit Test (Program 2)",MACHINE_MECHANICAL )
|
||||
GAME( 198?, m4clr, 0, mod2, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Barcrest","MPU4 Meter Clear ROM",MACHINE_MECHANICAL )
|
||||
GAME( 198?, m4rltst, 0, mod2, mpu4, mpu4unsorted_state, init_m4default, ROT0, "Barcrest","MPU4 Reel Test (3.0)",MACHINE_MECHANICAL )
|
||||
GAME( 198?, m4tst2, 0, mod2_no_bacta, mpu4, mpu4unsorted_state, init_m4test, ROT0, "Barcrest","MPU4 Unit Test (Program 2)",MACHINE_MECHANICAL )
|
||||
GAME( 198?, m4clr, 0, mod2_no_bacta, mpu4, mpu4unsorted_state, init_m4test, ROT0, "Barcrest","MPU4 Meter Clear ROM",MACHINE_MECHANICAL )
|
||||
GAME( 198?, m4rltst, 0, mod2_no_bacta, mpu4, mpu4unsorted_state, init_m4test, ROT0, "Barcrest","MPU4 Reel Test (3.0)",MACHINE_MECHANICAL )
|
||||
|
||||
// barcrest, to split
|
||||
|
||||
|
@ -1867,7 +1867,7 @@ void mpu4vid_state::machine_start()
|
||||
|
||||
m_mod_number=2;
|
||||
/* setup communications */
|
||||
m_link7a_connected = 1;
|
||||
m_link7a_connected = true;
|
||||
}
|
||||
|
||||
void mpu4vid_state::machine_reset()
|
||||
@ -2118,7 +2118,6 @@ void mpu4vid_state::mpu4_vid(machine_config &config)
|
||||
|
||||
mpu4_common(config);
|
||||
|
||||
|
||||
/* video hardware */
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
|
||||
screen.set_raw(VIDEO_MASTER_CLOCK, (63*8)+(17*8), 0, (63*8), (37*8)+17, 0, (37*8));
|
||||
@ -8701,7 +8700,7 @@ ROM_END
|
||||
|
||||
|
||||
/* Complete sets */
|
||||
/* Standard sets are the most common setups, while Datapak releases use a BACTA datalogger (not emulated) to record more information about the game operation, for security etc.
|
||||
/* Standard sets are the most common setups, while Datapak releases use a BACTA datalogger to record more information about the game operation, for security etc.
|
||||
AMLD versions do not pay out, and instead just feature highscore tables. These were mainly intended for locations unwilling to pay for gaming licenses.
|
||||
The AMLD Crystal Maze versions appear to be a mixture of the original game modules and Team Challenge's scoring system. This would suggest they were all made ~1994, despite
|
||||
the copyright dates recorded.
|
||||
|
@ -3,47 +3,127 @@
|
||||
license:CC0
|
||||
-->
|
||||
<mamelayout version="2">
|
||||
<element name="digit" defstate="0">
|
||||
<led7seg>
|
||||
<color red="1.0" green="0.0" blue="0.0" />
|
||||
</led7seg>
|
||||
|
||||
<element name="ledseg0">
|
||||
<image statemask="0x01">
|
||||
<data>
|
||||
<![CDATA[
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="60" viewBox="0 0 109.2832 165.8748">
|
||||
<path fill="#ffffff" d="M 22.20542,9.1048101 28.73216,15.40339 90.121429,15.68542 98.067028,7.8827048 97.972444,6.3785695 91.634871,-0.01402362 H 30.245613 L 22.489191,7.8827048 Z" />
|
||||
</svg>
|
||||
]]>
|
||||
</data>
|
||||
</image>
|
||||
</element>
|
||||
|
||||
<element name="ledseg1">
|
||||
<image statemask="0x01">
|
||||
<data>
|
||||
<![CDATA[
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="60" viewBox="0 0 109.2832 165.8748">
|
||||
<path fill="#ffffff" d="M 100.27788,70.003783 V 70.003783 L 105.06448,16.31986 98.670479,10.214696 94.729561,13.241168 89.485916,18.262069 85.770371,70.989977 91.77302,76.645088 Z" />
|
||||
</svg>
|
||||
]]>
|
||||
</data>
|
||||
</image>
|
||||
</element>
|
||||
|
||||
<element name="ledseg2">
|
||||
<image statemask="0x01">
|
||||
<data>
|
||||
<![CDATA[
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="60" viewBox="0 0 109.2832 165.8748">
|
||||
<path fill="#ffffff" d="M 95.196435,139.14134 V 139.14134 L 99.575477,85.260092 93.725882,79.132488 90.12051,82.170085 85.323325,87.209441 81.258449,139.0652 88.377384,147.32974 Z" />
|
||||
</svg>
|
||||
]]>
|
||||
</data>
|
||||
</image>
|
||||
</element>
|
||||
|
||||
<element name="ledseg3">
|
||||
<image statemask="0x01">
|
||||
<data>
|
||||
<![CDATA[
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="60" viewBox="0 0 109.2832 165.8748">
|
||||
<path fill="#ffffff" d="M 8.3614993,151.77509 15.041155,158.70056 77.868647,159.01066 86.000403,150.43135 85.903597,148.77751 79.417554,141.74867 H 16.590061 L 8.651919,150.43135 Z" id="path1176" />
|
||||
</svg>
|
||||
]]>
|
||||
</data>
|
||||
</image>
|
||||
</element>
|
||||
|
||||
<element name="ledseg4">
|
||||
<image statemask="0x01">
|
||||
<data>
|
||||
<![CDATA[
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="60" viewBox="0 0 109.2832 165.8748">
|
||||
<path fill="#ffffff" d="M 14.558811,138.94167 V 138.94167 L 19.193501,87.456057 13.002408,81.600896 9.1865559,84.503437 4.1093121,89.318734 0.18881344,137.65642 7.6209698,145.53443 Z" />
|
||||
</svg>
|
||||
]]>
|
||||
</data>
|
||||
</image>
|
||||
</element>
|
||||
|
||||
<element name="ledseg5">
|
||||
<image statemask="0x01">
|
||||
<data>
|
||||
<![CDATA[
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="60" viewBox="0 0 109.2832 165.8748">
|
||||
<path fill="#ffffff" d="M 20.773462,69.660587 V 69.660587 L 25.697055,15.534132 19.120048,9.3786417 15.066333,12.430062 9.6726043,17.492352 5.8507136,70.654911 12.02517,76.356638 Z" />
|
||||
</svg>
|
||||
]]>
|
||||
</data>
|
||||
</image>
|
||||
</element>
|
||||
|
||||
<element name="ledseg6">
|
||||
<image statemask="0x01">
|
||||
<data>
|
||||
<![CDATA[
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="60" viewBox="0 0 109.2832 165.8748">
|
||||
<path fill="#ffffff" d="M 15.232441,80.263244 21.75253,86.594345 83.079166,86.877827 91.016666,79.034823 90.922173,77.522917 84.591072,71.097323 H 23.264435 L 15.515923,79.034823 Z" />
|
||||
</svg>
|
||||
]]>
|
||||
</data>
|
||||
</image>
|
||||
</element>
|
||||
|
||||
|
||||
<element name="play" defstate="0">
|
||||
<text string="PLAY" state="1">
|
||||
<text string="PLAYER 1ST" state="1">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0" y="0.1" width="1" height="0.8" />
|
||||
<bounds x="0" y="0.1" width="1" height="0.4" />
|
||||
</text>
|
||||
<text string="CONTINUE" state="1">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0" y="0.5" width="1" height="0.4" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="pass" defstate="0">
|
||||
<text string="PASS" state="1">
|
||||
<text string="MACHINE 1ST" state="1">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0" y="0.1" width="1" height="0.8" />
|
||||
<bounds x="0" y="0.1" width="1" height="0.4" />
|
||||
</text>
|
||||
<text string="COLLECT" state="1">
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0" y="0.5" width="1" height="0.4" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="select" defstate="0">
|
||||
<rect>
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
</rect>
|
||||
<text string="SELECT" state="1">
|
||||
<color red="0.0" green="0.0" blue="0.0" />
|
||||
<bounds x="0" y="0.1" width="1" height="0.8" />
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0" y="0.1" width="0.8" height="0.6" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="drop" defstate="0">
|
||||
<rect>
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
</rect>
|
||||
<text string="DROP" state="1">
|
||||
<color red="0.0" green="0.0" blue="0.0" />
|
||||
<bounds x="0" y="0.1" width="1" height="0.8" />
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0" y="0.1" width="0.8" height="0.6" />
|
||||
</text>
|
||||
</element>
|
||||
<element name="timeout" defstate="0">
|
||||
<rect>
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
</rect>
|
||||
<text string="TIMEOUT" state="1">
|
||||
<color red="0.0" green="0.0" blue="0.0" />
|
||||
<color red="1.0" green="1.0" blue="1.0" />
|
||||
<bounds x="0" y="0.1" width="1" height="0.8" />
|
||||
</text>
|
||||
</element>
|
||||
@ -640,12 +720,65 @@ license:CC0
|
||||
<bounds x="30" y="56" width="28" height="14"/>
|
||||
</element>
|
||||
|
||||
<element name="digit8" ref="digit" state="0">
|
||||
|
||||
<element name="lamp106" ref="ledseg0" state="0">
|
||||
<color red="1.0" green="0.0" blue="0.0" />
|
||||
<bounds x="0" y="56" width="8" height="10"/>
|
||||
</element>
|
||||
<element name="digit9" ref="digit" state="0">
|
||||
<element name="lamp107" ref="ledseg1" state="0">
|
||||
<color red="1.0" green="0.0" blue="0.0" />
|
||||
<bounds x="0" y="56" width="8" height="10"/>
|
||||
</element>
|
||||
<element name="lamp108" ref="ledseg2" state="0">
|
||||
<color red="1.0" green="0.0" blue="0.0" />
|
||||
<bounds x="0" y="56" width="8" height="10"/>
|
||||
</element>
|
||||
<element name="lamp109" ref="ledseg3" state="0">
|
||||
<color red="1.0" green="0.0" blue="0.0" />
|
||||
<bounds x="0" y="56" width="8" height="10"/>
|
||||
</element>
|
||||
<element name="lamp104" ref="ledseg4" state="0">
|
||||
<color red="1.0" green="0.0" blue="0.0" />
|
||||
<bounds x="0" y="56" width="8" height="10"/>
|
||||
</element>
|
||||
<element name="lamp105" ref="ledseg5" state="0">
|
||||
<color red="1.0" green="0.0" blue="0.0" />
|
||||
<bounds x="0" y="56" width="8" height="10"/>
|
||||
</element>
|
||||
<element name="lamp110" ref="ledseg6" state="0">
|
||||
<color red="1.0" green="0.0" blue="0.0" />
|
||||
<bounds x="0" y="56" width="8" height="10"/>
|
||||
</element>
|
||||
|
||||
<element name="lamp114" ref="ledseg0" state="0">
|
||||
<color red="1.0" green="0.0" blue="0.0" />
|
||||
<bounds x="9" y="56" width="8" height="10"/>
|
||||
</element>
|
||||
<element name="lamp115" ref="ledseg1" state="0">
|
||||
<color red="1.0" green="0.0" blue="0.0" />
|
||||
<bounds x="9" y="56" width="8" height="10"/>
|
||||
</element>
|
||||
<element name="lamp116" ref="ledseg2" state="0">
|
||||
<color red="1.0" green="0.0" blue="0.0" />
|
||||
<bounds x="9" y="56" width="8" height="10"/>
|
||||
</element>
|
||||
<element name="lamp117" ref="ledseg3" state="0">
|
||||
<color red="1.0" green="0.0" blue="0.0" />
|
||||
<bounds x="9" y="56" width="8" height="10"/>
|
||||
</element>
|
||||
<element name="lamp112" ref="ledseg4" state="0">
|
||||
<color red="1.0" green="0.0" blue="0.0" />
|
||||
<bounds x="9" y="56" width="8" height="10"/>
|
||||
</element>
|
||||
<element name="lamp113" ref="ledseg5" state="0">
|
||||
<color red="1.0" green="0.0" blue="0.0" />
|
||||
<bounds x="9" y="56" width="8" height="10"/>
|
||||
</element>
|
||||
<element name="lamp118" ref="ledseg6" state="0">
|
||||
<color red="1.0" green="0.0" blue="0.0" />
|
||||
<bounds x="9" y="56" width="8" height="10"/>
|
||||
</element>
|
||||
|
||||
<element name="lamp119" ref="timeout" state="0">
|
||||
<bounds x="30" y="56" width="28" height="14"/>
|
||||
</element>
|
||||
@ -656,61 +789,21 @@ license:CC0
|
||||
<element name="lamp121" ref="pass" state="0">
|
||||
<bounds x="40" y="140" width="28" height="14"/>
|
||||
</element>
|
||||
<element name="lamp24" ref="select" state="0">
|
||||
<element name="lamp123" ref="select" state="0">
|
||||
<bounds x="0" y="90" width="28" height="14"/>
|
||||
</element>
|
||||
<element name="lamp123" ref="drop" state="0">
|
||||
<bounds x="20" y="90" width="28" height="14"/>
|
||||
</element>
|
||||
<element name="vfd15" ref="vfd0" state="0">
|
||||
<bounds x="0" y="120" width="9" height="14"/>
|
||||
</element>
|
||||
<element name="vfd14" ref="vfd0" state="0">
|
||||
<bounds x="9" y="120" width="9" height="14"/>
|
||||
</element>
|
||||
<element name="vfd13" ref="vfd0" state="0">
|
||||
<bounds x="18" y="120" width="9" height="14"/>
|
||||
</element>
|
||||
<element name="vfd12" ref="vfd0" state="0">
|
||||
<bounds x="27" y="120" width="9" height="14"/>
|
||||
</element>
|
||||
<element name="vfd11" ref="vfd0" state="0">
|
||||
<bounds x="36" y="120" width="9" height="14"/>
|
||||
</element>
|
||||
<element name="vfd10" ref="vfd0" state="0">
|
||||
<bounds x="45" y="120" width="9" height="14"/>
|
||||
</element>
|
||||
<element name="vfd9" ref="vfd0" state="0">
|
||||
<bounds x="54" y="120" width="9" height="14"/>
|
||||
</element>
|
||||
<element name="vfd8" ref="vfd0" state="0">
|
||||
<bounds x="63" y="120" width="9" height="14"/>
|
||||
</element>
|
||||
<element name="vfd7" ref="vfd0" state="0">
|
||||
<bounds x="72" y="120" width="9" height="14"/>
|
||||
</element>
|
||||
<element name="vfd6" ref="vfd0" state="0">
|
||||
<bounds x="81" y="120" width="9" height="14"/>
|
||||
</element>
|
||||
<element name="vfd5" ref="vfd0" state="0">
|
||||
<bounds x="90" y="120" width="9" height="14"/>
|
||||
</element>
|
||||
<element name="vfd4" ref="vfd0" state="0">
|
||||
<bounds x="99" y="120" width="9" height="14"/>
|
||||
</element>
|
||||
<element name="vfd3" ref="vfd0" state="0">
|
||||
<bounds x="108" y="120" width="9" height="14"/>
|
||||
</element>
|
||||
<element name="vfd2" ref="vfd0" state="0">
|
||||
<bounds x="117" y="120" width="9" height="14"/>
|
||||
</element>
|
||||
<element name="vfd1" ref="vfd0" state="0">
|
||||
<bounds x="126" y="120" width="9" height="14"/>
|
||||
</element>
|
||||
<element name="vfd0" ref="vfd0" state="0">
|
||||
<bounds x="135" y="120" width="9" height="14"/>
|
||||
<element name="lamp120" ref="drop" state="0">
|
||||
<bounds x="30" y="90" width="28" height="14"/>
|
||||
</element>
|
||||
|
||||
|
||||
<repeat count="16">
|
||||
<param name="i" start="15" increment="-1"/>
|
||||
<param name="x" start="0" increment="9"/>
|
||||
<element name="vfd~i~" ref="vfd0">
|
||||
<bounds x="~x~" y="120" width="9" height="14"/>
|
||||
</element>
|
||||
</repeat>
|
||||
|
||||
</view>
|
||||
</mamelayout>
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user