summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/sega/segaorun.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/sega/segaorun.cpp')
-rw-r--r--src/mame/sega/segaorun.cpp42
1 files changed, 26 insertions, 16 deletions
diff --git a/src/mame/sega/segaorun.cpp b/src/mame/sega/segaorun.cpp
index 0dc0804a020..fa92ce85778 100644
--- a/src/mame/sega/segaorun.cpp
+++ b/src/mame/sega/segaorun.cpp
@@ -417,20 +417,20 @@ void segaorun_state::bankmotor_control_w(uint8_t data)
if (data < 8)
{
// left
- output().set_value("Bank_Motor_Direction", 1);
- output().set_value("Bank_Motor_Speed", 8 - data);
+ m_bank_motor_direction = 1;
+ m_bank_motor_speed = 8 - data;
}
else if (data == 8)
{
// no movement
- output().set_value("Bank_Motor_Direction", 0);
- output().set_value("Bank_Motor_Speed", 0);
+ m_bank_motor_direction = 0;
+ m_bank_motor_speed = 0;
}
else
{
// right
- output().set_value("Bank_Motor_Direction", 2);
- output().set_value("Bank_Motor_Speed", data - 8);
+ m_bank_motor_direction = 2;
+ m_bank_motor_speed = data - 8;
}
}
@@ -530,6 +530,15 @@ void segaorun_state::nop_w(address_space &space, offs_t offset, uint16_t data, u
// DRIVER OVERRIDES
//**************************************************************************
+void segaorun_state::machine_start()
+{
+ m_bank_motor_direction.resolve();
+ m_bank_motor_speed.resolve();
+ m_vibration_motor.resolve();
+ m_start_lamp.resolve();
+ m_brake_lamp.resolve();
+}
+
//-------------------------------------------------
// machine_reset - reset the state of the machine
//-------------------------------------------------
@@ -541,9 +550,6 @@ void segaorun_state::machine_reset()
m_mapper->configure_explicit(m_custom_map);
m_segaic16vid->tilemap_reset(*m_screen);
- // hook the RESET line, which resets CPU #1
- m_maincpu->set_reset_callback(*this, FUNC(segaorun_state::m68k_reset_callback));
-
// start timers to track interrupts
m_scanline_timer->adjust(m_screen->time_until_pos(223), 223);
}
@@ -689,9 +695,9 @@ void segaorun_state::outrun_custom_io_w(offs_t offset, uint16_t data, uint16_t m
// D1: Brake lamp
// other bits: ?
machine().sound().system_mute(!BIT(data, 7));
- output().set_value("Vibration_motor", BIT(data, 5));
- output().set_value("Start_lamp", BIT(data, 2));
- output().set_value("Brake_lamp", BIT(data, 1));
+ m_vibration_motor = BIT(data, 5);
+ m_start_lamp = BIT(data, 2);
+ m_brake_lamp = BIT(data, 1);
}
return;
@@ -765,9 +771,9 @@ void segaorun_state::shangon_custom_io_w(offs_t offset, uint16_t data, uint16_t
// D2: Start lamp
// other bits: ?
m_adc_select = data >> 6 & 3;
- m_segaic16vid->set_display_enable(data >> 5 & 1);
- output().set_value("Vibration_motor", data >> 3 & 1);
- output().set_value("Start_lamp", data >> 2 & 1);
+ m_segaic16vid->set_display_enable(BIT(data, 5));
+ m_vibration_motor = BIT(data, 3);
+ m_start_lamp = BIT(data, 2);
}
return;
@@ -834,7 +840,7 @@ void segaorun_state::update_main_irqs()
// main 68000 is reset
//-------------------------------------------------
-WRITE_LINE_MEMBER(segaorun_state::m68k_reset_callback)
+void segaorun_state::m68k_reset_callback(int state)
{
m_subcpu->pulse_input_line(INPUT_LINE_RESET, attotime::zero);
}
@@ -1155,6 +1161,7 @@ void segaorun_state::outrun_base(machine_config &config)
// basic machine hardware
M68000(config, m_maincpu, MASTER_CLOCK/4);
m_maincpu->set_addrmap(AS_PROGRAM, &segaorun_state::outrun_map);
+ m_maincpu->reset_cb().set(FUNC(segaorun_state::m68k_reset_callback));
M68000(config, m_subcpu, MASTER_CLOCK/4);
m_subcpu->set_addrmap(AS_PROGRAM, &segaorun_state::sub_map);
@@ -1238,6 +1245,7 @@ void segaorun_state::outrun_fd1094(machine_config &config)
FD1094(config.replace(), m_maincpu, MASTER_CLOCK/4);
m_maincpu->set_addrmap(AS_PROGRAM, &segaorun_state::outrun_map);
m_maincpu->set_addrmap(AS_OPCODES, &segaorun_state::decrypted_opcodes_map);
+ m_maincpu->reset_cb().set(FUNC(segaorun_state::m68k_reset_callback));
}
void segaorun_state::outrun_fd1089a(machine_config &config)
@@ -1247,6 +1255,7 @@ void segaorun_state::outrun_fd1089a(machine_config &config)
// basic machine hardware
FD1089A(config.replace(), m_maincpu, MASTER_CLOCK/4);
m_maincpu->set_addrmap(AS_PROGRAM, &segaorun_state::outrun_map);
+ m_maincpu->reset_cb().set(FUNC(segaorun_state::m68k_reset_callback));
}
void segaorun_state::shangon(machine_config &config)
@@ -1277,6 +1286,7 @@ void segaorun_state::shangon_fd1089b(machine_config &config)
// basic machine hardware
FD1089B(config.replace(), m_maincpu, MASTER_CLOCK/4);
m_maincpu->set_addrmap(AS_PROGRAM, &segaorun_state::outrun_map);
+ m_maincpu->reset_cb().set(FUNC(segaorun_state::m68k_reset_callback));
}