summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/includes
diff options
context:
space:
mode:
author Jonathan Gevaryahu <Lord-Nightmare@users.noreply.github.com>2020-10-09 13:25:40 -0400
committer GitHub <noreply@github.com>2020-10-10 04:25:40 +1100
commit63dc4b41edae9a16c81895cccd2d6b9e68002839 (patch)
treed3066bf1685e94cb7a4aee40c8b33bc9a59af9af /src/mame/includes
parent0cb876c37536f05cd81f6a7feba8c06698b82ee7 (diff)
Major update for HC55516 CVSD audio device and related filtering, as well as hooking it to drivers. (#7290)
* Split hc55516 core into separate cores/subclasses for hc55516 and hc55532 (new 'digital' implementation based on decap/die tracing) as well as mc3417 and mc3418 (old existing 'analog' implementation left alone) and hooked the hc55516 and mc3417 implementations to the appropriate hardware drivers. This should vastly improve CVSD sound quality in drivers that use the hc55516. [Lord Nightmare, Sean Riddle] * Made Exidy's mouse trap use a timer to clock the mc3417 and update the state readable by the z80 rather than relying on the mc3417 to accept a clock parameter and update the z80 state via a callback. The timer implementation ensures proper synchronization and prevents missed clock transitions from the z80 side causing noise in the CVSD audio. [Lord Nightmare] * Added a biquad-based 2nd order filter emulation for an audio stream (to go along with flt_rc 1st order filter emulation) and hooked it to Exidy's mouse trap (mc3417) and williams drivers (hc55516) following the original schematics. For hc55516 this is necessary as the original chip produces a very pronounced audible 16khz 'carrier' in its output audio even on the real chip, and these filters suppress this. This also happens to a lesser extent with the 8khz quieting waveform noise on both mc3417 and hc55516. [Lord Nightmare] * Made Williams System 11 and s11_bg relative sound mixing more accurate to the original audio flow on the PCB itself. [Lord Nightmare] * Switched Williams Joust 2 to use the s11_bg common sound device rather than its own implementation. [Lord Nightmare]
Diffstat (limited to 'src/mame/includes')
-rw-r--r--src/mame/includes/s11.h9
-rw-r--r--src/mame/includes/williams.h7
2 files changed, 12 insertions, 4 deletions
diff --git a/src/mame/includes/s11.h b/src/mame/includes/s11.h
index 4c63ff9df64..af42237c704 100644
--- a/src/mame/includes/s11.h
+++ b/src/mame/includes/s11.h
@@ -10,12 +10,14 @@
#define MAME_INCLUDES_S11_H
#include "cpu/m6800/m6800.h"
-#include "audio/s11c_bg.h"
#include "audio/pinsnd88.h"
+#include "audio/s11c_bg.h"
#include "machine/6821pia.h"
#include "machine/genpin.h"
#include "machine/input_merger.h"
+#include "machine/rescap.h"
#include "sound/dac.h"
+#include "sound/flt_biquad.h"
#include "sound/hc55516.h"
#include "sound/ym2151.h"
@@ -45,6 +47,8 @@ public:
, m_audiocpu(*this, "audiocpu")
, m_audioirq(*this, "audioirq")
, m_hc55516(*this, "hc55516")
+ , m_cvsd_filter(*this, "cvsd_filter")
+ , m_cvsd_filter2(*this, "cvsd_filter2")
, m_dac(*this, "dac")
, m_pias(*this, "pias")
, m_pia21(*this, "pia21")
@@ -60,6 +64,7 @@ public:
{ }
void s11(machine_config &config);
+ void s11_only(machine_config &config);
void s11_bgs(machine_config &config);
void s11_bgm(machine_config &config);
@@ -113,6 +118,8 @@ protected:
optional_device<m6802_cpu_device> m_audiocpu;
optional_device<input_merger_device> m_audioirq;
optional_device<hc55516_device> m_hc55516;
+ optional_device<filter_biquad_device> m_cvsd_filter;
+ optional_device<filter_biquad_device> m_cvsd_filter2;
optional_device<mc1408_device> m_dac;
optional_device<pia6821_device> m_pias;
required_device<pia6821_device> m_pia21;
diff --git a/src/mame/includes/williams.h b/src/mame/includes/williams.h
index bc910e8be0e..2054be06828 100644
--- a/src/mame/includes/williams.h
+++ b/src/mame/includes/williams.h
@@ -11,6 +11,7 @@
#pragma once
#include "audio/williams.h"
+#include "audio/s11c_bg.h"
#include "cpu/m6800/m6800.h"
#include "cpu/m6809/m6809.h"
#include "machine/6821pia.h"
@@ -479,7 +480,7 @@ public:
joust2_state(const machine_config &mconfig, device_type type, const char *tag) :
williams_d000_rom_state(mconfig, type, tag),
m_mux(*this, "mux"),
- m_cvsd_sound(*this, "cvsd")
+ m_bg(*this, "bg")
{ }
void joust2(machine_config &config);
@@ -489,7 +490,7 @@ private:
virtual void driver_init() override;
required_device<ls157_device> m_mux;
- required_device<williams_cvsd_sound_device> m_cvsd_sound;
+ required_device<s11_obg_device> m_bg;
uint16_t m_current_sound_data;
virtual TILE_GET_INFO_MEMBER(get_tile_info) override;
@@ -497,7 +498,7 @@ private:
TIMER_CALLBACK_MEMBER(deferred_snd_cmd_w);
void snd_cmd_w(u8 data);
- DECLARE_WRITE_LINE_MEMBER(pia_3_cb1_w);
+ DECLARE_WRITE_LINE_MEMBER(pia_s11_bg_strobe_w);
};
/*----------- defined in video/williams.cpp -----------*/