summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Lord-Nightmare <Lord-Nightmare@users.noreply.github.com>2020-06-30 00:39:48 -0400
committer Lord-Nightmare <Lord-Nightmare@users.noreply.github.com>2020-06-30 00:43:26 -0400
commitbd7430d59a82bb75efa3ad4ed4dbcf8227e59e8a (patch)
tree47f5915e2b2cb17163f28a6da15c46fac2f53f9d
parent2cec7db48aebb84badf3b613f6dfa62314006f71 (diff)
Williams System 11/11a/11b/11c pinballs: further consistency fixes with device and function names, more fixes (missed a few earlier) relating to the CVSD speech clock polarity and digital input bit masking, and corrected some memory/device mirroring issues to be consistent across the drivers. [Lord Nightmare]
-rw-r--r--src/mame/audio/s11c_bg.cpp17
-rw-r--r--src/mame/audio/s11c_bg.h4
-rw-r--r--src/mame/drivers/s11.cpp8
-rw-r--r--src/mame/drivers/s11a.cpp8
-rw-r--r--src/mame/drivers/s11b.cpp41
-rw-r--r--src/mame/drivers/s11c.cpp18
-rw-r--r--src/mame/includes/s11.h4
-rw-r--r--src/mame/includes/s11b.h4
8 files changed, 51 insertions, 53 deletions
diff --git a/src/mame/audio/s11c_bg.cpp b/src/mame/audio/s11c_bg.cpp
index 4c37bbe3236..c57804523ad 100644
--- a/src/mame/audio/s11c_bg.cpp
+++ b/src/mame/audio/s11c_bg.cpp
@@ -29,12 +29,12 @@ s11c_bg_device::s11c_bg_device(const machine_config &mconfig, const char *tag, d
void s11c_bg_device::s11c_bg_map(address_map &map)
{
- map(0x0000, 0x07ff).ram();
+ map(0x0000, 0x07ff).mirror(0x1800).ram();
map(0x2000, 0x2001).mirror(0x1ffe).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
map(0x4000, 0x4003).mirror(0x1ffc).rw("pia40", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
- map(0x6000, 0x67ff).w(FUNC(s11c_bg_device::bg_speech_digit_w));
- map(0x6800, 0x6fff).w(FUNC(s11c_bg_device::bg_speech_clock_w));
- map(0x7800, 0x7fff).w(FUNC(s11c_bg_device::bgbank_w));
+ map(0x6000, 0x6000).mirror(0x07ff).w(FUNC(s11c_bg_device::bg_cvsd_clock_set_w));
+ map(0x6800, 0x6800).mirror(0x07ff).w(FUNC(s11c_bg_device::bg_cvsd_digit_clock_clear_w));
+ map(0x7800, 0x7800).mirror(0x07ff).w(FUNC(s11c_bg_device::bgbank_w));
map(0x8000, 0xffff).bankr("bgbank");
}
@@ -104,16 +104,15 @@ WRITE_LINE_MEMBER( s11c_bg_device::ym2151_irq_w)
m_pia40->ca1_w(0);
}
-void s11c_bg_device::bg_speech_clock_w(uint8_t data)
+void s11c_bg_device::bg_cvsd_clock_set_w(uint8_t data)
{
- // pulses clock input?
m_hc55516->clock_w(1);
- m_hc55516->clock_w(0);
}
-void s11c_bg_device::bg_speech_digit_w(uint8_t data)
+void s11c_bg_device::bg_cvsd_digit_clock_clear_w(uint8_t data)
{
- m_hc55516->digit_w(data);
+ m_hc55516->clock_w(0);
+ m_hc55516->digit_w(data&1);
}
void s11c_bg_device::bgbank_w(uint8_t data)
diff --git a/src/mame/audio/s11c_bg.h b/src/mame/audio/s11c_bg.h
index f269883be80..b5d9330c677 100644
--- a/src/mame/audio/s11c_bg.h
+++ b/src/mame/audio/s11c_bg.h
@@ -23,8 +23,8 @@ public:
// construction/destruction
s11c_bg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
- void bg_speech_clock_w(uint8_t data);
- void bg_speech_digit_w(uint8_t data);
+ void bg_cvsd_clock_set_w(uint8_t data);
+ void bg_cvsd_digit_clock_clear_w(uint8_t data);
void bgbank_w(uint8_t data);
void ctrl_w(uint8_t data);
void data_w(uint8_t data);
diff --git a/src/mame/drivers/s11.cpp b/src/mame/drivers/s11.cpp
index 59af4452bc5..e30a0f2b20b 100644
--- a/src/mame/drivers/s11.cpp
+++ b/src/mame/drivers/s11.cpp
@@ -52,7 +52,7 @@ void s11_state::s11_audio_map(address_map &map)
void s11_state::s11_bg_map(address_map &map)
{
map(0x0000, 0x07ff).mirror(0x1800).ram();
- map(0x2000, 0x2001).mirror(0x1ffe).rw(m_ym, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x2000, 0x2001).mirror(0x1ffe).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
map(0x4000, 0x4003).mirror(0x1ffc).rw(m_pia40, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
map(0x8000, 0xffff).rom();
}
@@ -491,9 +491,9 @@ void s11_state::s11(machine_config &config)
m_bgcpu->set_addrmap(AS_PROGRAM, &s11_state::s11_bg_map);
SPEAKER(config, "bg").front_center();
- YM2151(config, m_ym, 3580000);
- m_ym->irq_handler().set(FUNC(s11_state::ym2151_irq_w));
- m_ym->add_route(ALL_OUTPUTS, "bg", 0.50);
+ YM2151(config, m_ym2151, 3580000);
+ m_ym2151->irq_handler().set(FUNC(s11_state::ym2151_irq_w));
+ m_ym2151->add_route(ALL_OUTPUTS, "bg", 0.50);
MC1408(config, "dac1", 0).add_route(ALL_OUTPUTS, "bg", 0.25);
diff --git a/src/mame/drivers/s11a.cpp b/src/mame/drivers/s11a.cpp
index fd53f292986..3bc29d603c9 100644
--- a/src/mame/drivers/s11a.cpp
+++ b/src/mame/drivers/s11a.cpp
@@ -55,7 +55,7 @@ void s11a_state::s11a_audio_map(address_map &map)
void s11a_state::s11a_bg_map(address_map &map)
{
map(0x0000, 0x07ff).mirror(0x1800).ram();
- map(0x2000, 0x2001).mirror(0x1ffe).rw(m_ym, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x2000, 0x2001).mirror(0x1ffe).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
map(0x4000, 0x4003).mirror(0x1ffc).rw(m_pia40, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
map(0x7800, 0x7fff).w(FUNC(s11a_state::bgbank_w));
map(0x8000, 0xffff).bankr("bgbank");
@@ -265,9 +265,9 @@ void s11a_state::s11a(machine_config &config)
m_bgcpu->set_addrmap(AS_PROGRAM, &s11a_state::s11a_bg_map);
SPEAKER(config, "bg").front_center();
- YM2151(config, m_ym, XTAL(3'579'545));
- m_ym->irq_handler().set(FUNC(s11a_state::ym2151_irq_w));
- m_ym->add_route(ALL_OUTPUTS, "bg", 0.50);
+ YM2151(config, m_ym2151, XTAL(3'579'545));
+ m_ym2151->irq_handler().set(FUNC(s11a_state::ym2151_irq_w));
+ m_ym2151->add_route(ALL_OUTPUTS, "bg", 0.50);
MC1408(config, "dac1", 0).add_route(ALL_OUTPUTS, "bg", 0.25);
diff --git a/src/mame/drivers/s11b.cpp b/src/mame/drivers/s11b.cpp
index e2467801041..11754cd13b2 100644
--- a/src/mame/drivers/s11b.cpp
+++ b/src/mame/drivers/s11b.cpp
@@ -48,7 +48,7 @@ void s11b_state::s11b_main_map(address_map &map)
void s11b_state::s11b_audio_map(address_map &map)
{
map(0x0000, 0x07ff).mirror(0x0800).ram();
- map(0x1000, 0x1fff).w(FUNC(s11b_state::bank_w));
+ map(0x1000, 0x1000).mirror(0x0fff).w(FUNC(s11b_state::bank_w));
map(0x2000, 0x2003).mirror(0x0ffc).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
map(0x8000, 0xbfff).bankr("bank0");
map(0xc000, 0xffff).bankr("bank1");
@@ -56,12 +56,12 @@ void s11b_state::s11b_audio_map(address_map &map)
void s11b_state::s11b_bg_map(address_map &map)
{
- map(0x0000, 0x07ff).ram();
- map(0x2000, 0x2001).mirror(0x1ffe).rw(m_ym, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x0000, 0x07ff).mirror(0x1800).ram();
+ map(0x2000, 0x2001).mirror(0x1ffe).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
map(0x4000, 0x4003).mirror(0x1ffc).rw(m_pia40, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
- map(0x6000, 0x67ff).w(FUNC(s11b_state::bg_speech_digit_w));
- map(0x6800, 0x6fff).w(FUNC(s11b_state::bg_speech_clock_w));
- map(0x7800, 0x7fff).w(FUNC(s11b_state::bgbank_w));
+ map(0x6000, 0x6000).mirror(0x07ff).w(FUNC(s11b_state::bg_cvsd_digit_clock_clear_w));
+ map(0x6800, 0x6800).mirror(0x07ff).w(FUNC(s11b_state::bg_cvsd_clock_set_w));
+ map(0x7800, 0x7800).mirror(0x07ff).w(FUNC(s11b_state::bgbank_w));
map(0x8000, 0xffff).bankr("bgbank");
}
@@ -153,20 +153,19 @@ MACHINE_RESET_MEMBER( s11b_state, s11b )
m_bgcpu->pulse_input_line(INPUT_LINE_RESET, attotime::zero);
}
-void s11b_state::bg_speech_clock_w(uint8_t data)
+void s11b_state::bg_cvsd_clock_set_w(uint8_t data)
{
if(m_bg_hc55516)
- {
- // pulses clock input?
m_bg_hc55516->clock_w(1);
- m_bg_hc55516->clock_w(0);
- }
}
-void s11b_state::bg_speech_digit_w(uint8_t data)
+void s11b_state::bg_cvsd_digit_clock_clear_w(uint8_t data)
{
if(m_bg_hc55516)
- m_bg_hc55516->digit_w(data);
+ {
+ m_bg_hc55516->clock_w(0);
+ m_bg_hc55516->digit_w(data&1);
+ }
}
void s11b_state::dig1_w(uint8_t data)
@@ -331,8 +330,8 @@ void s11b_state::s11b(machine_config &config)
m_pias->set_port_a_input_overrides_output_mask(0xff);
m_pias->writepa_handler().set(FUNC(s11_state::sound_w));
m_pias->writepb_handler().set("dac", FUNC(dac_byte_interface::data_w));
- m_pias->ca2_handler().set("hc55516", FUNC(hc55516_device::clock_w));
- m_pias->cb2_handler().set("hc55516", FUNC(hc55516_device::digit_w));
+ m_pias->ca2_handler().set(m_hc55516, FUNC(hc55516_device::clock_w));
+ m_pias->cb2_handler().set(m_hc55516, FUNC(hc55516_device::digit_w));
m_pias->irqa_handler().set(m_audioirq, FUNC(input_merger_device::in_w<0>));
m_pias->irqb_handler().set(m_audioirq, FUNC(input_merger_device::in_w<1>));
@@ -342,9 +341,9 @@ void s11b_state::s11b(machine_config &config)
config.set_maximum_quantum(attotime::from_hz(50));
SPEAKER(config, "bg").front_center();
- YM2151(config, m_ym, 3580000);
- m_ym->irq_handler().set(FUNC(s11b_state::ym2151_irq_w));
- m_ym->add_route(ALL_OUTPUTS, "bg", 0.25);
+ YM2151(config, m_ym2151, 3580000);
+ m_ym2151->irq_handler().set(FUNC(s11b_state::ym2151_irq_w));
+ m_ym2151->add_route(ALL_OUTPUTS, "bg", 0.25);
MC1408(config, "dac1", 0).add_route(ALL_OUTPUTS, "bg", 0.25);
@@ -353,10 +352,10 @@ void s11b_state::s11b(machine_config &config)
PIA6821(config, m_pia40, 0);
m_pia40->writepa_handler().set("dac1", FUNC(dac_byte_interface::data_w));
m_pia40->writepb_handler().set(FUNC(s11_state::pia40_pb_w));
- m_pia40->ca2_handler().set("ym2151", FUNC(ym2151_device::reset_w));
+ m_pia40->ca2_handler().set(m_ym2151, FUNC(ym2151_device::reset_w));
m_pia40->cb2_handler().set(FUNC(s11_state::pia40_cb2_w));
- m_pia40->irqa_handler().set_inputline("bgcpu", M6809_FIRQ_LINE);
- m_pia40->irqb_handler().set_inputline("bgcpu", INPUT_LINE_NMI);
+ m_pia40->irqa_handler().set_inputline(m_bgcpu, M6809_FIRQ_LINE);
+ m_pia40->irqb_handler().set_inputline(m_bgcpu, INPUT_LINE_NMI);
}
/*-----------------------
diff --git a/src/mame/drivers/s11c.cpp b/src/mame/drivers/s11c.cpp
index 6d9dd87c84d..44e0e214c0f 100644
--- a/src/mame/drivers/s11c.cpp
+++ b/src/mame/drivers/s11c.cpp
@@ -29,20 +29,20 @@ void s11c_state::s11c_main_map(address_map &map)
void s11c_state::s11c_audio_map(address_map &map)
{
map(0x0000, 0x07ff).mirror(0x0800).ram();
- map(0x1000, 0x1fff).w(FUNC(s11c_state::bank_w));
- map(0x2000, 0x2003).mirror(0x0ffc).rw("pias", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x1000, 0x1000).mirror(0x0fff).w(FUNC(s11c_state::bank_w));
+ map(0x2000, 0x2003).mirror(0x0ffc).rw(m_pias, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
map(0x8000, 0xbfff).bankr("bank0");
map(0xc000, 0xffff).bankr("bank1");
}
void s11c_state::s11c_bg_map(address_map &map)
{
- map(0x0000, 0x07ff).ram();
- map(0x2000, 0x2001).mirror(0x1ffe).rw("ym2151", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
- map(0x4000, 0x4003).mirror(0x1ffc).rw("pia40", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
- map(0x6000, 0x67ff).w(FUNC(s11c_state::bg_speech_digit_w));
- map(0x6800, 0x6fff).w(FUNC(s11c_state::bg_speech_clock_w));
- map(0x7800, 0x7fff).w(FUNC(s11c_state::bgbank_w));
+ map(0x0000, 0x07ff).mirror(0x1800).ram();
+ map(0x2000, 0x2001).mirror(0x1ffe).rw(m_ym2151, FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x4000, 0x4003).mirror(0x1ffc).rw(m_pia40, FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x6000, 0x6000).mirror(0x07ff).w(FUNC(s11c_state::bg_cvsd_digit_clock_clear_w));
+ map(0x6800, 0x6800).mirror(0x07ff).w(FUNC(s11c_state::bg_cvsd_clock_set_w));
+ map(0x7800, 0x7800).mirror(0x07ff).w(FUNC(s11c_state::bgbank_w));
map(0x8000, 0xffff).bankr("bgbank");
}
@@ -219,7 +219,7 @@ void s11c_state::s11c(machine_config &config)
/* Add the background music card */
SPEAKER(config, "speaker").front_center();
S11C_BG(config, m_bg);
- m_bg->set_romregion("bgcpu");
+ m_bg->set_romregion(m_bgcpu);
m_bg->add_route(ALL_OUTPUTS, "speaker", 1.0);
}
diff --git a/src/mame/includes/s11.h b/src/mame/includes/s11.h
index fe378dfd1e5..e34199656cd 100644
--- a/src/mame/includes/s11.h
+++ b/src/mame/includes/s11.h
@@ -53,7 +53,7 @@ public:
, m_pia30(*this, "pia30")
, m_pia34(*this, "pia34")
, m_pia40(*this, "pia40")
- , m_ym(*this, "ym2151")
+ , m_ym2151(*this, "ym2151")
, m_bg(*this, "bgm")
, m_digits(*this, "digit%u", 0U)
, m_swarray(*this, "SW.%u", 0U)
@@ -122,7 +122,7 @@ protected:
required_device<pia6821_device> m_pia30;
required_device<pia6821_device> m_pia34;
optional_device<pia6821_device> m_pia40;
- optional_device<ym2151_device> m_ym;
+ optional_device<ym2151_device> m_ym2151;
optional_device<s11c_bg_device> m_bg;
output_finder<63> m_digits;
required_ioport_array<8> m_swarray;
diff --git a/src/mame/includes/s11b.h b/src/mame/includes/s11b.h
index 81973963902..9630c62531a 100644
--- a/src/mame/includes/s11b.h
+++ b/src/mame/includes/s11b.h
@@ -29,8 +29,8 @@ public:
void pia2c_pb_w(uint8_t data);
void pia34_pa_w(uint8_t data);
- void bg_speech_clock_w(uint8_t data);
- void bg_speech_digit_w(uint8_t data);
+ void bg_cvsd_clock_set_w(uint8_t data);
+ void bg_cvsd_digit_clock_clear_w(uint8_t data);
protected:
void set_invert(bool inv) { m_invert = inv; }