diff options
author | Derrick Renaud <derrickr@mamedev.org> | 2009-10-06 23:24:17 +0000 |
---|---|---|
committer | Derrick Renaud <derrickr@mamedev.org> | 2009-10-06 23:24:17 +0000 |
commit | 0d1660e579ec25a8ffad89ff9594a010e424e63e (patch) | |
tree | 255552175eea0d21d1c41c7feb6afe2816b513cf | |
parent | 37443dbc67be0d0629a3deb58b4155f20936b53c (diff) |
DISCRETE_CRFILTER, DISCRETE_RCFILTER
- optimized my recent changes. Not worth mentioning.
-rw-r--r-- | src/emu/sound/disc_flt.c | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/src/emu/sound/disc_flt.c b/src/emu/sound/disc_flt.c index b7bd7b57272..8e7ad3df977 100644 --- a/src/emu/sound/disc_flt.c +++ b/src/emu/sound/disc_flt.c @@ -99,6 +99,7 @@ struct dst_rcfilter_context double vCap; double rc; double exponent; + UINT8 has_rc_nodes; }; struct dst_rcfilter_sw_context @@ -147,12 +148,14 @@ static DISCRETE_STEP(dst_crfilter) { struct dst_rcfilter_context *context = (struct dst_rcfilter_context *)node->context; - double rc = DST_CRFILTER__R * DST_CRFILTER__C; - - if (rc != context->rc) + if (context->has_rc_nodes) { - context->rc = rc; - context->exponent = RC_CHARGE_EXP(rc); + double rc = DST_CRFILTER__R * DST_CRFILTER__C; + if (rc != context->rc) + { + context->rc = rc; + context->exponent = RC_CHARGE_EXP(rc); + } } node->output[0] = DST_CRFILTER__IN - context->vCap; @@ -164,6 +167,7 @@ static DISCRETE_RESET(dst_crfilter) { struct dst_rcfilter_context *context = (struct dst_rcfilter_context *)node->context; + context->has_rc_nodes = node->input_is_node & 0x6; context->rc = DST_CRFILTER__R * DST_CRFILTER__C; context->exponent = RC_CHARGE_EXP(context->rc); context->vCap = 0; @@ -1029,12 +1033,14 @@ static DISCRETE_STEP(dst_rcfilter) { struct dst_rcfilter_context *context = (struct dst_rcfilter_context *)node->context; - double rc = DST_RCFILTER__R * DST_RCFILTER__C; - - if (rc != context->rc) + if (context->has_rc_nodes) { - context->rc = rc; - context->exponent = RC_CHARGE_EXP(rc); + double rc = DST_RCFILTER__R * DST_RCFILTER__C; + if (rc != context->rc) + { + context->rc = rc; + context->exponent = RC_CHARGE_EXP(rc); + } } /************************************************************************/ @@ -1049,6 +1055,7 @@ static DISCRETE_RESET(dst_rcfilter) { struct dst_rcfilter_context *context = (struct dst_rcfilter_context *)node->context; + context->has_rc_nodes = node->input_is_node & 0x6; context->rc = DST_RCFILTER__R * DST_RCFILTER__C; context->exponent = RC_CHARGE_EXP(context->rc); context->vCap = 0; |