diff --git a/src/mame/drivers/bladestl.c b/src/mame/drivers/bladestl.c index f39618057f0..b3b349facca 100644 --- a/src/mame/drivers/bladestl.c +++ b/src/mame/drivers/bladestl.c @@ -91,8 +91,17 @@ WRITE8_MEMBER(bladestl_state::bladestl_sh_irqtrigger_w) WRITE8_MEMBER(bladestl_state::bladestl_port_B_w) { - /* bit 1, 2 unknown */ + // bits 3-5 = ROM bank select m_upd7759->set_bank_base(((data & 0x38) >> 3) * 0x20000); + + // bit 2 = SSG-C rc filter enable + m_filter3->filter_rc_set_RC(FLT_RC_LOWPASS, 1000, 2200, 1000, data & 0x04 ? CAP_N(150) : 0); /* YM2203-SSG-C */ + + // bit 1 = SSG-B rc filter enable + m_filter2->filter_rc_set_RC(FLT_RC_LOWPASS, 1000, 2200, 1000, data & 0x02 ? CAP_N(150) : 0); /* YM2203-SSG-B */ + + // bit 0 = SSG-A rc filter enable + m_filter1->filter_rc_set_RC(FLT_RC_LOWPASS, 1000, 2200, 1000, data & 0x01 ? CAP_N(150) : 0); /* YM2203-SSG-A */ } READ8_MEMBER(bladestl_state::bladestl_speech_busy_r) @@ -340,7 +349,17 @@ static MACHINE_CONFIG_START( bladestl, bladestl_state ) MCFG_SOUND_ADD("ymsnd", YM2203, 3579545) MCFG_AY8910_PORT_A_WRITE_CB(DEVWRITE8("upd", upd775x_device, port_w)) MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(bladestl_state, bladestl_port_B_w)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.45) + MCFG_SOUND_ROUTE(0, "filter1", 0.45) + MCFG_SOUND_ROUTE(1, "filter2", 0.45) + MCFG_SOUND_ROUTE(2, "filter3", 0.45) + MCFG_SOUND_ROUTE(3, "mono", 0.45) + + MCFG_FILTER_RC_ADD("filter1", 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) + MCFG_FILTER_RC_ADD("filter2", 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) + MCFG_FILTER_RC_ADD("filter3", 0) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/includes/bladestl.h b/src/mame/includes/bladestl.h index 8d29c6bb57e..f05acc7abd7 100644 --- a/src/mame/includes/bladestl.h +++ b/src/mame/includes/bladestl.h @@ -3,6 +3,7 @@ Blades of Steel *************************************************************************/ +#include "sound/flt_rc.h" #include "sound/upd7759.h" #include "video/k007342.h" #include "video/k007420.h" @@ -20,6 +21,9 @@ public: m_k007342(*this, "k007342"), m_k007420(*this, "k007420"), m_upd7759(*this, "upd"), + m_filter1(*this, "filter1"), + m_filter2(*this, "filter2"), + m_filter3(*this, "filter3"), m_gfxdecode(*this, "gfxdecode"), m_trackball(*this, trackball_tags), m_rombank(*this, "rombank") { } @@ -29,6 +33,9 @@ public: required_device m_k007342; required_device m_k007420; required_device m_upd7759; + required_device m_filter1; + required_device m_filter2; + required_device m_filter3; required_device m_gfxdecode; required_ioport_array<4> m_trackball;