summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/devices/bus/a2bus/a2mockingboard.cpp26
-rw-r--r--src/devices/bus/a2bus/a2mockingboard.h2
2 files changed, 24 insertions, 4 deletions
diff --git a/src/devices/bus/a2bus/a2mockingboard.cpp b/src/devices/bus/a2bus/a2mockingboard.cpp
index 2aac998b9f7..c7f5fda534d 100644
--- a/src/devices/bus/a2bus/a2mockingboard.cpp
+++ b/src/devices/bus/a2bus/a2mockingboard.cpp
@@ -89,10 +89,9 @@ void a2bus_phasor_device::device_add_mconfig(machine_config &config)
SPEAKER(config, "lspeaker2").front_left();
SPEAKER(config, "rspeaker2").front_right();
- m_ay1->set_clock(1022727*2);
- AY8913(config, m_ay2, 1022727*2);
- AY8913(config, m_ay3, 1022727*2);
- AY8913(config, m_ay4, 1022727*2);
+ AY8913(config, m_ay2, 1022727);
+ AY8913(config, m_ay3, 1022727);
+ AY8913(config, m_ay4, 1022727);
m_ay2->add_route(ALL_OUTPUTS, "lspeaker2", 0.5);
m_ay3->add_route(ALL_OUTPUTS, "rspeaker", 0.5);
m_ay4->add_route(ALL_OUTPUTS, "rspeaker2", 0.5);
@@ -415,16 +414,35 @@ void a2bus_phasor_device::via2_out_b(uint8_t data)
}
}
+void a2bus_phasor_device::set_clocks()
+{
+ if (m_native)
+ {
+ m_ay1->set_clock(1022727*2);
+ m_ay2->set_clock(1022727*2);
+ m_ay3->set_clock(1022727*2);
+ m_ay4->set_clock(1022727*2);
+ }
+ else
+ {
+ m_ay1->set_clock(1022727);
+ m_ay2->set_clock(1022727);
+ m_ay3->set_clock(1022727);
+ m_ay4->set_clock(1022727);
+ }
+}
uint8_t a2bus_phasor_device::read_c0nx(uint8_t offset)
{
m_native = BIT(offset, 0);
+ set_clocks();
return 0xff;
}
void a2bus_phasor_device::write_c0nx(uint8_t offset, uint8_t data)
{
m_native = BIT(offset, 0);
+ set_clocks();
}
uint8_t a2bus_echoplus_device::read_c0nx(uint8_t offset)
diff --git a/src/devices/bus/a2bus/a2mockingboard.h b/src/devices/bus/a2bus/a2mockingboard.h
index 6d4aa8e73af..44acff10006 100644
--- a/src/devices/bus/a2bus/a2mockingboard.h
+++ b/src/devices/bus/a2bus/a2mockingboard.h
@@ -97,6 +97,8 @@ protected:
required_device<ay8913_device> m_ay4;
private:
+ void set_clocks();
+
bool m_native;
};