Discrete update

- fix some "const" weirdness I introduced
- fix VREF in CRFILTER_VREF and RCFILTER_VREF. VREF never got used since it was only a static parameter.
- Removed enable from CR_FILTER* and RC_FILTER*
- Updated drivers accordingly.
- Use EXPECTED/UNEXPECTED to help the compiler
This commit is contained in:
Couriersud 2009-10-05 22:01:48 +00:00
parent 138d136ea8
commit 1a263d82f2
38 changed files with 213 additions and 230 deletions

View File

@ -691,7 +691,7 @@ static DISCRETE_STEP(dsd_555_cc)
UINT8 flip_flop = context->flip_flop; UINT8 flip_flop = context->flip_flop;
if (DSD_555_CC__RESET) if (UNEXPECTED(DSD_555_CC__RESET))
{ {
/* We are in RESET */ /* We are in RESET */
node->output[0] = 0; node->output[0] = 0;
@ -1723,14 +1723,14 @@ static DISCRETE_STEP(dsd_ls624)
sample_t = node->info->sample_time; /* Change in time */ sample_t = node->info->sample_time; /* Change in time */
//dt = LS624_T(DSD_LS624__C, DSD_LS624__VRNG, DSD_LS624__VMOD) / 2.0; //dt = LS624_T(DSD_LS624__C, DSD_LS624__VRNG, DSD_LS624__VMOD) / 2.0;
if (DSD_LS624__VMOD > 0.001) if (EXPECTED(DSD_LS624__VMOD > 0.001))
dt = 0.5 / LS624_F(DSD_LS624__VMOD); dt = 0.5 / LS624_F(DSD_LS624__VMOD);
else else
/* close enough to 0, so we can speed things up by no longer call pow() */ /* close enough to 0, so we can speed things up by no longer call pow() */
dt = context->dt_vmod_at_0; dt = context->dt_vmod_at_0;
t = context->remain; t = context->remain;
en += (double) context->state * t; en += (double) context->state * t;
while (t + dt <= sample_t) while (EXPECTED(t + dt <= sample_t))
{ {
en += (double) context->state * dt; en += (double) context->state * dt;
context->state = (1 - context->state); context->state = (1 - context->state);
@ -1750,7 +1750,7 @@ static DISCRETE_STEP(dsd_ls624)
break; break;
case DISC_LS624_OUT_LOGIC: case DISC_LS624_OUT_LOGIC:
/* filter out randomness */ /* filter out randomness */
if (cntf + cntr > 1) if (UNEXPECTED(cntf + cntr > 1))
node->output[0] = 1; node->output[0] = 1;
else else
node->output[0] = context->state; node->output[0] = context->state;

View File

@ -96,8 +96,9 @@ struct dst_rcdisc4_context
struct dst_rcfilter_context struct dst_rcfilter_context
{ {
double exponent;
double vCap; double vCap;
double vRef;
double exponent;
}; };
struct dst_rcfilter_sw_context struct dst_rcfilter_sw_context
@ -137,25 +138,18 @@ struct dst_rcintegrate_context
* input[4] - Voltage reference. Usually 0V. * input[4] - Voltage reference. Usually 0V.
* *
************************************************************************/ ************************************************************************/
#define DST_CRFILTER__ENABLE DISCRETE_INPUT(0) #define DST_CRFILTER__IN DISCRETE_INPUT(0)
#define DST_CRFILTER__IN DISCRETE_INPUT(1) #define DST_CRFILTER__R DISCRETE_INPUT(1)
#define DST_CRFILTER__R DISCRETE_INPUT(2) #define DST_CRFILTER__C DISCRETE_INPUT(2)
#define DST_CRFILTER__C DISCRETE_INPUT(3) #define DST_CRFILTER__VREF DISCRETE_INPUT(3)
#define DST_CRFILTER__VREF DISCRETE_INPUT(4)
static DISCRETE_STEP(dst_crfilter) static DISCRETE_STEP(dst_crfilter)
{ {
struct dst_rcfilter_context *context = (struct dst_rcfilter_context *)node->context; struct dst_rcfilter_context *context = (struct dst_rcfilter_context *)node->context;
if(DST_CRFILTER__ENABLE)
{
node->output[0] = DST_CRFILTER__IN - context->vCap; node->output[0] = DST_CRFILTER__IN - context->vCap;
context->vCap += ((DST_CRFILTER__IN - DST_CRFILTER__VREF) - context->vCap) * context->exponent; //context->vCap += ((DST_CRFILTER__IN - context->vRef) - context->vCap) * context->exponent;
} context->vCap += (node->output[0] - context->vRef) * context->exponent;
else
{
node->output[0] = 0;
}
} }
static DISCRETE_RESET(dst_crfilter) static DISCRETE_RESET(dst_crfilter)
@ -164,6 +158,7 @@ static DISCRETE_RESET(dst_crfilter)
context->exponent = RC_CHARGE_EXP(DST_CRFILTER__R * DST_CRFILTER__C); context->exponent = RC_CHARGE_EXP(DST_CRFILTER__R * DST_CRFILTER__C);
context->vCap = 0; context->vCap = 0;
context->vRef = DST_CRFILTER__VREF;
node->output[0] = DST_CRFILTER__IN; node->output[0] = DST_CRFILTER__IN;
} }
@ -1017,11 +1012,10 @@ static DISCRETE_RESET(dst_rcdisc_mod)
* input[4] - Voltage reference. Usually 0V. * input[4] - Voltage reference. Usually 0V.
* *
************************************************************************/ ************************************************************************/
#define DST_RCFILTER__ENABLE DISCRETE_INPUT(0) #define DST_RCFILTER__VIN DISCRETE_INPUT(0)
#define DST_RCFILTER__VIN DISCRETE_INPUT(1) #define DST_RCFILTER__R DISCRETE_INPUT(1)
#define DST_RCFILTER__R DISCRETE_INPUT(2) #define DST_RCFILTER__C DISCRETE_INPUT(2)
#define DST_RCFILTER__C DISCRETE_INPUT(3) #define DST_RCFILTER__VREF DISCRETE_INPUT(3)
#define DST_RCFILTER__VREF DISCRETE_INPUT(4)
static DISCRETE_STEP(dst_rcfilter) static DISCRETE_STEP(dst_rcfilter)
{ {
@ -1031,15 +1025,8 @@ static DISCRETE_STEP(dst_rcfilter)
/* Next Value = PREV + (INPUT_VALUE - PREV)*(1-(EXP(-TIMEDELTA/RC))) */ /* Next Value = PREV + (INPUT_VALUE - PREV)*(1-(EXP(-TIMEDELTA/RC))) */
/************************************************************************/ /************************************************************************/
if(DST_RCFILTER__ENABLE) context->vCap += ((DST_RCFILTER__VIN - node->output[0]) * context->exponent);
{ node->output[0] = context->vCap + context->vRef;
context->vCap += ((DST_RCFILTER__VIN - DST_RCFILTER__VREF - context->vCap) * context->exponent);
node->output[0] = context->vCap + DST_RCFILTER__VREF;
}
else
{
node->output[0] = 0;
}
} }
static DISCRETE_RESET(dst_rcfilter) static DISCRETE_RESET(dst_rcfilter)
@ -1047,6 +1034,7 @@ static DISCRETE_RESET(dst_rcfilter)
struct dst_rcfilter_context *context = (struct dst_rcfilter_context *)node->context; struct dst_rcfilter_context *context = (struct dst_rcfilter_context *)node->context;
context->exponent = RC_CHARGE_EXP(DST_RCFILTER__R * DST_RCFILTER__C); context->exponent = RC_CHARGE_EXP(DST_RCFILTER__R * DST_RCFILTER__C);
context->vRef = DST_RCFILTER__VREF;
context->vCap = 0; context->vCap = 0;
node->output[0] = 0; node->output[0] = 0;
} }

View File

@ -155,7 +155,7 @@ static DISCRETE_STEP(dss_adjustment)
INT32 rawportval = input_port_read_direct(context->port); INT32 rawportval = input_port_read_direct(context->port);
/* only recompute if the value changed from last time */ /* only recompute if the value changed from last time */
if (rawportval != context->lastpval) if (UNEXPECTED(rawportval != context->lastpval))
{ {
double portval = (double)(rawportval - context->pmin) * context->pscale; double portval = (double)(rawportval - context->pmin) * context->pscale;
double scaledval = portval * context->scale + context->min; double scaledval = portval * context->scale + context->min;
@ -288,7 +288,7 @@ static DISCRETE_STEP(dss_input_stream)
/* the context pointer is set to point to the current input stream data in discrete_stream_update */ /* the context pointer is set to point to the current input stream data in discrete_stream_update */
struct dss_input_context *context = (struct dss_input_context *)node->context; struct dss_input_context *context = (struct dss_input_context *)node->context;
if (context->ptr) if (EXPECTED(context->ptr))
{ {
node->output[0] = (*context->ptr) * context->gain + context->offset; node->output[0] = (*context->ptr) * context->gain + context->offset;
context->ptr++; context->ptr++;

View File

@ -1404,7 +1404,7 @@ static DISCRETE_STEP(dst_oneshot)
/* If the state is triggered we will need to countdown later */ /* If the state is triggered we will need to countdown later */
int do_count = context->state; int do_count = context->state;
if (DST_ONESHOT__RESET) if (UNEXPECTED(DST_ONESHOT__RESET))
{ {
/* Hold in Reset */ /* Hold in Reset */
node->output[0] = 0; node->output[0] = 0;
@ -1413,7 +1413,7 @@ static DISCRETE_STEP(dst_oneshot)
else else
{ {
/* are we at an edge? */ /* are we at an edge? */
if (trigger != context->last_trig) if (UNEXPECTED(trigger != context->last_trig))
{ {
/* There has been a trigger edge */ /* There has been a trigger edge */
context->last_trig = trigger; context->last_trig = trigger;
@ -1441,7 +1441,7 @@ static DISCRETE_STEP(dst_oneshot)
} }
} }
if (do_count) if (UNEXPECTED(do_count))
{ {
context->countdown -= node->info->sample_time; context->countdown -= node->info->sample_time;
if(context->countdown <= 0.0) if(context->countdown <= 0.0)

View File

@ -36,7 +36,7 @@ struct dso_wavelog_context
* *
*************************************/ *************************************/
static void task_check(discrete_task *task, const discrete_task *dest_task) static void task_check(discrete_task *task, discrete_task *dest_task)
{ {
int inputnum; int inputnum;
const linked_list_entry *node_entry; const linked_list_entry *node_entry;
@ -87,7 +87,7 @@ static void task_check(discrete_task *task, const discrete_task *dest_task)
/* register into source list */ /* register into source list */
source = auto_alloc(dest_node->info->device->machine, discrete_source_node); source = auto_alloc(dest_node->info->device->machine, discrete_source_node);
linked_list_add(dest_node->info, linked_list_add(dest_node->info,
(linked_list_entry **) (FPTR) &dest_task->source_list, &dest_task->source_list,
source); source);
source->task = task; source->task = task;
source->output_node = i; source->output_node = i;

View File

@ -80,7 +80,7 @@ struct _task_info
static void init_nodes(discrete_info *info, const linked_list_entry *block_list, const device_config *device); static void init_nodes(discrete_info *info, const linked_list_entry *block_list, const device_config *device);
static void find_input_nodes(const discrete_info *info); static void find_input_nodes(const discrete_info *info);
static node_description *discrete_find_node(const discrete_info *info, const int node); static node_description *discrete_find_node(const discrete_info *info, int node);
static DEVICE_RESET( discrete ); static DEVICE_RESET( discrete );
static STREAM_UPDATE( discrete_stream_update ); static STREAM_UPDATE( discrete_stream_update );
static STREAM_UPDATE( buffer_stream_update ); static STREAM_UPDATE( buffer_stream_update );
@ -345,7 +345,7 @@ INLINE void step_nodes_in_list(const linked_list_entry *list)
* *
*************************************/ *************************************/
static node_description *discrete_find_node(const discrete_info *info, const int node) static node_description *discrete_find_node(const discrete_info *info,int node)
{ {
if (node < NODE_START || node > NODE_END) return NULL; if (node < NODE_START || node > NODE_END) return NULL;
return info->indexed_node[NODE_INDEX(node)]; return info->indexed_node[NODE_INDEX(node)];
@ -939,6 +939,29 @@ static void init_nodes(discrete_info *info, const linked_list_entry *block_list,
* *
*************************************/ *************************************/
/* attempt to group all static node parameters together.
* Has a negative impact on performance - but it should
* reduce memory bandwidth - this is weird. */
#if 0
static double dbuf[10240];
static int dbufptr = 0;
static double *getDoublePtr(double val)
{
int i;
for (i=0; i<dbufptr; i+=1)
{
if (dbuf[i] == val)
{
return &dbuf[i];
}
}
dbuf[dbufptr] = val;
dbufptr+=1;
return &dbuf[dbufptr-1];
}
#endif
static void find_input_nodes(const discrete_info *info) static void find_input_nodes(const discrete_info *info)
{ {
const linked_list_entry *entry; const linked_list_entry *entry;
@ -979,7 +1002,8 @@ static void find_input_nodes(const discrete_info *info)
} }
else else
{ {
node->input[inputnum] = &(block->initial[inputnum]); node->input[inputnum] = &(node->block->initial[inputnum]);
//node->input[inputnum] = getDoublePtr(node->block->initial[inputnum]);
} }
} }
} }

View File

@ -3715,6 +3715,8 @@ struct _discrete_module
struct _node_description struct _node_description
{ {
const discrete_module *module; /* Node's module info */
double output[DISCRETE_MAX_OUTPUTS]; /* The node's last output value */ double output[DISCRETE_MAX_OUTPUTS]; /* The node's last output value */
int active_inputs; /* Number of active inputs on this node type */ int active_inputs; /* Number of active inputs on this node type */
@ -3724,9 +3726,8 @@ struct _node_description
void * context; /* Contextual information specific to this node type */ void * context; /* Contextual information specific to this node type */
const void * custom; /* Custom function specific initialisation data */ const void * custom; /* Custom function specific initialisation data */
const discrete_module *module; /* Node's module info */
const discrete_sound_block *block; /* Points to the node's setup block. */
const discrete_info *info; /* Points to the parent */ const discrete_info *info; /* Points to the parent */
const discrete_sound_block *block; /* Points to the node's setup block. */
osd_ticks_t run_time; osd_ticks_t run_time;
}; };
@ -3745,8 +3746,8 @@ struct _node_description
typedef struct _linked_list_entry linked_list_entry; typedef struct _linked_list_entry linked_list_entry;
struct _linked_list_entry struct _linked_list_entry
{ {
const void *ptr;
linked_list_entry *next; linked_list_entry *next;
const void *ptr;
}; };
typedef struct _discrete_task discrete_task; typedef struct _discrete_task discrete_task;
@ -3758,8 +3759,8 @@ struct _discrete_task
int numbuffered; int numbuffered;
double *ptr[DISCRETE_MAX_TASK_OUTPUTS]; double *ptr[DISCRETE_MAX_TASK_OUTPUTS];
double *node_buf[DISCRETE_MAX_TASK_OUTPUTS]; double *node_buf[DISCRETE_MAX_TASK_OUTPUTS];
node_description *nodes[DISCRETE_MAX_TASK_OUTPUTS]; const node_description *nodes[DISCRETE_MAX_TASK_OUTPUTS];
double *source[DISCRETE_MAX_TASK_OUTPUTS]; const double *source[DISCRETE_MAX_TASK_OUTPUTS];
/* list of source nodes */ /* list of source nodes */
linked_list_entry *source_list; /* discrete_source_node */ linked_list_entry *source_list; /* discrete_source_node */
@ -3769,9 +3770,9 @@ typedef struct _discrete_source_node discrete_source_node;
struct _discrete_source_node struct _discrete_source_node
{ {
const discrete_task *task; const discrete_task *task;
const double *ptr;
int output_node; int output_node;
double buffer; double buffer;
double *ptr;
}; };
struct _discrete_info struct _discrete_info
@ -4436,8 +4437,8 @@ enum
#define DISCRETE_FILTER2(NODE,ENAB,INP0,FREQ,DAMP,TYPE) { NODE, DST_FILTER2 , 5, { ENAB,INP0,NODE_NC,NODE_NC,NODE_NC }, { ENAB,INP0,FREQ,DAMP,TYPE }, NULL, "DISCRETE_FILTER2" }, #define DISCRETE_FILTER2(NODE,ENAB,INP0,FREQ,DAMP,TYPE) { NODE, DST_FILTER2 , 5, { ENAB,INP0,NODE_NC,NODE_NC,NODE_NC }, { ENAB,INP0,FREQ,DAMP,TYPE }, NULL, "DISCRETE_FILTER2" },
/* Component specific */ /* Component specific */
#define DISCRETE_SALLEN_KEY_FILTER(NODE,ENAB,INP0,TYPE,INFO) { NODE, DST_SALLEN_KEY , 3, { ENAB,INP0,NODE_NC }, { ENAB,INP0,TYPE }, INFO, "DISCRETE_SALLEN_KEY_FILTER" }, #define DISCRETE_SALLEN_KEY_FILTER(NODE,ENAB,INP0,TYPE,INFO) { NODE, DST_SALLEN_KEY , 3, { ENAB,INP0,NODE_NC }, { ENAB,INP0,TYPE }, INFO, "DISCRETE_SALLEN_KEY_FILTER" },
#define DISCRETE_CRFILTER(NODE,ENAB,INP0,RVAL,CVAL) { NODE, DST_CRFILTER , 4, { ENAB,INP0,NODE_NC,NODE_NC }, { ENAB,INP0,RVAL,CVAL }, NULL, "DISCRETE_CRFILTER" }, #define DISCRETE_CRFILTER(NODE,INP0,RVAL,CVAL) { NODE, DST_CRFILTER , 4, { INP0,NODE_NC,NODE_NC }, { INP0,RVAL,CVAL }, NULL, "DISCRETE_CRFILTER" },
#define DISCRETE_CRFILTER_VREF(NODE,ENAB,INP0,RVAL,CVAL,VREF) { NODE, DST_CRFILTER , 5, { ENAB,INP0,NODE_NC,NODE_NC,NODE_NC }, { ENAB,INP0,RVAL,CVAL,VREF }, NULL, "DISCRETE_CRFILTER_VREF" }, #define DISCRETE_CRFILTER_VREF(NODE,INP0,RVAL,CVAL,VREF) { NODE, DST_CRFILTER , 5, { INP0,NODE_NC,NODE_NC,NODE_NC }, { INP0,RVAL,CVAL,VREF }, NULL, "DISCRETE_CRFILTER_VREF" },
#define DISCRETE_OP_AMP_FILTER(NODE,ENAB,INP0,INP1,TYPE,INFO) { NODE, DST_OP_AMP_FILT , 4, { ENAB,INP0,INP1,NODE_NC }, { ENAB,INP0,INP1,TYPE }, INFO, "DISCRETE_OP_AMP_FILTER" }, #define DISCRETE_OP_AMP_FILTER(NODE,ENAB,INP0,INP1,TYPE,INFO) { NODE, DST_OP_AMP_FILT , 4, { ENAB,INP0,INP1,NODE_NC }, { ENAB,INP0,INP1,TYPE }, INFO, "DISCRETE_OP_AMP_FILTER" },
#define DISCRETE_RCDISC(NODE,ENAB,INP0,RVAL,CVAL) { NODE, DST_RCDISC , 4, { ENAB,INP0,NODE_NC,NODE_NC }, { ENAB,INP0,RVAL,CVAL }, NULL, "DISCRETE_RCDISC" }, #define DISCRETE_RCDISC(NODE,ENAB,INP0,RVAL,CVAL) { NODE, DST_RCDISC , 4, { ENAB,INP0,NODE_NC,NODE_NC }, { ENAB,INP0,RVAL,CVAL }, NULL, "DISCRETE_RCDISC" },
#define DISCRETE_RCDISC2(NODE,SWITCH,INP0,RVAL0,INP1,RVAL1,CVAL) { NODE, DST_RCDISC2 , 6, { SWITCH,INP0,NODE_NC,INP1,NODE_NC,NODE_NC }, { SWITCH,INP0,RVAL0,INP1,RVAL1,CVAL }, NULL, "DISCRETE_RCDISC2" }, #define DISCRETE_RCDISC2(NODE,SWITCH,INP0,RVAL0,INP1,RVAL1,CVAL) { NODE, DST_RCDISC2 , 6, { SWITCH,INP0,NODE_NC,INP1,NODE_NC,NODE_NC }, { SWITCH,INP0,RVAL0,INP1,RVAL1,CVAL }, NULL, "DISCRETE_RCDISC2" },
@ -4445,9 +4446,9 @@ enum
#define DISCRETE_RCDISC4(NODE,ENAB,INP0,RVAL0,RVAL1,RVAL2,CVAL,VP,TYPE) { NODE, DST_RCDISC4 , 8, { ENAB,INP0,NODE_NC,NODE_NC,NODE_NC,NODE_NC,NODE_NC,NODE_NC }, { ENAB,INP0,RVAL0,RVAL1,RVAL2,CVAL,VP,TYPE }, NULL, "DISCRETE_RCDISC4" }, #define DISCRETE_RCDISC4(NODE,ENAB,INP0,RVAL0,RVAL1,RVAL2,CVAL,VP,TYPE) { NODE, DST_RCDISC4 , 8, { ENAB,INP0,NODE_NC,NODE_NC,NODE_NC,NODE_NC,NODE_NC,NODE_NC }, { ENAB,INP0,RVAL0,RVAL1,RVAL2,CVAL,VP,TYPE }, NULL, "DISCRETE_RCDISC4" },
#define DISCRETE_RCDISC5(NODE,ENAB,INP0,RVAL,CVAL) { NODE, DST_RCDISC5 , 4, { ENAB,INP0,NODE_NC,NODE_NC }, { ENAB,INP0,RVAL,CVAL }, NULL, "DISCRETE_RCDISC5" }, #define DISCRETE_RCDISC5(NODE,ENAB,INP0,RVAL,CVAL) { NODE, DST_RCDISC5 , 4, { ENAB,INP0,NODE_NC,NODE_NC }, { ENAB,INP0,RVAL,CVAL }, NULL, "DISCRETE_RCDISC5" },
#define DISCRETE_RCDISC_MODULATED(NODE,INP0,INP1,RVAL0,RVAL1,RVAL2,RVAL3,CVAL,VP) { NODE, DST_RCDISC_MOD, 8, { INP0,INP1,NODE_NC,NODE_NC,NODE_NC,NODE_NC,NODE_NC,NODE_NC }, { INP0,INP1,RVAL0,RVAL1,RVAL2,RVAL3,CVAL,VP }, NULL, "DISCRETE_RCDISC_MODULATED" }, #define DISCRETE_RCDISC_MODULATED(NODE,INP0,INP1,RVAL0,RVAL1,RVAL2,RVAL3,CVAL,VP) { NODE, DST_RCDISC_MOD, 8, { INP0,INP1,NODE_NC,NODE_NC,NODE_NC,NODE_NC,NODE_NC,NODE_NC }, { INP0,INP1,RVAL0,RVAL1,RVAL2,RVAL3,CVAL,VP }, NULL, "DISCRETE_RCDISC_MODULATED" },
#define DISCRETE_RCFILTER(NODE,ENAB,INP0,RVAL,CVAL) { NODE, DST_RCFILTER , 4, { ENAB,INP0,NODE_NC,NODE_NC }, { ENAB,INP0,RVAL,CVAL }, NULL, "DISCRETE_RCFILTER" }, #define DISCRETE_RCFILTER(NODE,INP0,RVAL,CVAL) { NODE, DST_RCFILTER , 3, { INP0,NODE_NC,NODE_NC }, { INP0,RVAL,CVAL }, NULL, "DISCRETE_RCFILTER" },
#define DISCRETE_RCFILTER_VREF(NODE,INP0,RVAL,CVAL,VREF) { NODE, DST_RCFILTER , 4, { INP0,NODE_NC,NODE_NC,NODE_NC }, { INP0,RVAL,CVAL,VREF }, NULL, "DISCRETE_RCFILTER_VREF" },
#define DISCRETE_RCFILTER_SW(NODE,ENAB,INP0,SW,RVAL,CVAL1,CVAL2,CVAL3,CVAL4) { NODE, DST_RCFILTER_SW, 8, { ENAB,INP0,SW,NODE_NC,NODE_NC,NODE_NC,NODE_NC,NODE_NC }, { ENAB,INP0,SW,RVAL,CVAL1,CVAL2,CVAL3,CVAL4 }, NULL, "DISCRETE_RCFILTER_SW" }, #define DISCRETE_RCFILTER_SW(NODE,ENAB,INP0,SW,RVAL,CVAL1,CVAL2,CVAL3,CVAL4) { NODE, DST_RCFILTER_SW, 8, { ENAB,INP0,SW,NODE_NC,NODE_NC,NODE_NC,NODE_NC,NODE_NC }, { ENAB,INP0,SW,RVAL,CVAL1,CVAL2,CVAL3,CVAL4 }, NULL, "DISCRETE_RCFILTER_SW" },
#define DISCRETE_RCFILTER_VREF(NODE,ENAB,INP0,RVAL,CVAL,VREF) { NODE, DST_RCFILTER , 5, { ENAB,INP0,NODE_NC,NODE_NC,NODE_NC }, { ENAB,INP0,RVAL,CVAL,VREF }, NULL, "DISCRETE_RCFILTER_VREF" },
#define DISCRETE_RCINTEGRATE(NODE,INP0,RVAL0,RVAL1,RVAL2,CVAL,vP,TYPE) { NODE, DST_RCINTEGRATE , 7, { INP0,NODE_NC,NODE_NC,NODE_NC,NODE_NC,NODE_NC,NODE_NC }, { INP0,RVAL0,RVAL1,RVAL2,CVAL,vP,TYPE }, NULL, "DISCRETE_RCINTEGRATE" }, #define DISCRETE_RCINTEGRATE(NODE,INP0,RVAL0,RVAL1,RVAL2,CVAL,vP,TYPE) { NODE, DST_RCINTEGRATE , 7, { INP0,NODE_NC,NODE_NC,NODE_NC,NODE_NC,NODE_NC,NODE_NC }, { INP0,RVAL0,RVAL1,RVAL2,CVAL,vP,TYPE }, NULL, "DISCRETE_RCINTEGRATE" },
/* For testing - seem to be buggered. Use versions not ending in N. */ /* For testing - seem to be buggered. Use versions not ending in N. */
#define DISCRETE_RCDISCN(NODE,ENAB,INP0,RVAL,CVAL) { NODE, DST_RCDISCN , 4, { ENAB,INP0,NODE_NC,NODE_NC }, { ENAB,INP0,RVAL,CVAL }, NULL, "DISCRETE_RCDISCN" }, #define DISCRETE_RCDISCN(NODE,ENAB,INP0,RVAL,CVAL) { NODE, DST_RCDISCN , 4, { ENAB,INP0,NODE_NC,NODE_NC }, { ENAB,INP0,RVAL,CVAL }, NULL, "DISCRETE_RCDISCN" },

View File

@ -263,7 +263,7 @@ DISCRETE_SOUND_START(indianbt)
* Final Mixing and Output * Final Mixing and Output
* *
******************************************************************************/ ******************************************************************************/
DISCRETE_CRFILTER(NODE_90, 1, NODE_22, RES_K(10), CAP_U(0.1)) DISCRETE_CRFILTER(NODE_90, NODE_22, RES_K(10), CAP_U(0.1))
DISCRETE_OUTPUT(NODE_90, 21000) DISCRETE_OUTPUT(NODE_90, 21000)
@ -574,8 +574,8 @@ DISCRETE_SOUND_START(polaris)
******************************************************************************/ ******************************************************************************/
DISCRETE_OP_AMP_TRIG_VCA(NODE_70, POLARIS_SX3_EN, 0, 0, POLARIS_NOISE_LO, 0, &polaris_exp_tvca_info) DISCRETE_OP_AMP_TRIG_VCA(NODE_70, POLARIS_SX3_EN, 0, 0, POLARIS_NOISE_LO, 0, &polaris_exp_tvca_info)
DISCRETE_RCFILTER(NODE_71, 1, NODE_70, 560.0, CAP_U(.22)) DISCRETE_RCFILTER(NODE_71, NODE_70, 560.0, CAP_U(.22))
DISCRETE_RCFILTER(POLARIS_EXPLOSIONSND, 1, NODE_71, RES_K(6.8), CAP_U(.22)) DISCRETE_RCFILTER(POLARIS_EXPLOSIONSND, NODE_71, RES_K(6.8), CAP_U(.22))
/****************************************************************************** /******************************************************************************
* *
@ -759,22 +759,22 @@ DISCRETE_SOUND_START(schaser)
DISCRETE_SQUAREWFIX(NODE_20, 1, SCHASER_4V, DEFAULT_TTL_V_LOGIC_1, 50, 0, 0) DISCRETE_SQUAREWFIX(NODE_20, 1, SCHASER_4V, DEFAULT_TTL_V_LOGIC_1, 50, 0, 0)
DISCRETE_SQUAREWFIX(NODE_21, 1, SCHASER_8V, DEFAULT_TTL_V_LOGIC_1, 50, 0, 0) DISCRETE_SQUAREWFIX(NODE_21, 1, SCHASER_8V, DEFAULT_TTL_V_LOGIC_1, 50, 0, 0)
DISCRETE_SWITCH(NODE_22, SCHASER_DOT_EN, SCHASER_DOT_SEL, NODE_20, NODE_21) DISCRETE_SWITCH(NODE_22, SCHASER_DOT_EN, SCHASER_DOT_SEL, NODE_20, NODE_21)
DISCRETE_RCFILTER(NODE_23, 1, NODE_22, 560, CAP_U(.1)) DISCRETE_RCFILTER(NODE_23, NODE_22, 560, CAP_U(.1))
DISCRETE_RCFILTER(NODE_24, 1, NODE_23, RES_K(6.8) + 560, CAP_U(.1)) DISCRETE_RCFILTER(NODE_24, NODE_23, RES_K(6.8) + 560, CAP_U(.1))
DISCRETE_MULTIPLY(SCHASER_DOT_SND, NODE_24, SCHASER_VR3) DISCRETE_MULTIPLY(SCHASER_DOT_SND, NODE_24, SCHASER_VR3)
/************************************************/ /************************************************/
/* Explosion/Effect filtering */ /* Explosion/Effect filtering */
/************************************************/ /************************************************/
DISCRETE_RCFILTER(NODE_30, 1, SCHASER_EXP_STREAM, 560, CAP_U(.1)) DISCRETE_RCFILTER(NODE_30, SCHASER_EXP_STREAM, 560, CAP_U(.1))
DISCRETE_RCFILTER(NODE_31, 1, NODE_30, RES_K(6.8) + 560, CAP_U(.1)) DISCRETE_RCFILTER(NODE_31, NODE_30, RES_K(6.8) + 560, CAP_U(.1))
DISCRETE_CRFILTER(NODE_32, 1, NODE_31, RES_K(6.8) + 560 + RES_K(2) + RES_K(50), CAP_U(1)) DISCRETE_CRFILTER(NODE_32, NODE_31, RES_K(6.8) + 560 + RES_K(2) + RES_K(50), CAP_U(1))
DISCRETE_MULTIPLY(SCHASER_EXP_SND, NODE_32, SCHASER_VR2) DISCRETE_MULTIPLY(SCHASER_EXP_SND, NODE_32, SCHASER_VR2)
/************************************************/ /************************************************/
/* Music is just a 1 bit DAC */ /* Music is just a 1 bit DAC */
/************************************************/ /************************************************/
DISCRETE_CRFILTER(NODE_40, 1, SCHASER_MUSIC_BIT, RES_K(470) + RES_K(50), CAP_U(.01)) DISCRETE_CRFILTER(NODE_40, SCHASER_MUSIC_BIT, RES_K(470) + RES_K(50), CAP_U(.01))
DISCRETE_MULTIPLY(SCHASER_MUSIC_SND, NODE_40, SCHASER_VR1) DISCRETE_MULTIPLY(SCHASER_MUSIC_SND, NODE_40, SCHASER_VR1)
/************************************************/ /************************************************/

View File

@ -113,7 +113,7 @@ DISCRETE_SOUND_START(asteroid)
/************************************************/ /************************************************/
DISCRETE_DAC_R1(NODE_30, ASTEROID_THUMP_DATA, 3.5, &asteroid_thump_dac1) // CMOS DISCRETE_DAC_R1(NODE_30, ASTEROID_THUMP_DATA, 3.5, &asteroid_thump_dac1) // CMOS
DISCRETE_555_CC(NODE_31, ASTEROID_THUMP_EN, NODE_30, RES_K(22), CAP_U(0.22), 0, 0, RES_K(18), &asteroid_thump_555cc) DISCRETE_555_CC(NODE_31, ASTEROID_THUMP_EN, NODE_30, RES_K(22), CAP_U(0.22), 0, 0, RES_K(18), &asteroid_thump_555cc)
DISCRETE_RCFILTER(NODE_32, 1, NODE_31, RES_K(3.3), CAP_U(0.1)) DISCRETE_RCFILTER(NODE_32, NODE_31, RES_K(3.3), CAP_U(0.1))
DISCRETE_GAIN(ASTEROID_THUMP_SND, NODE_32, 30) DISCRETE_GAIN(ASTEROID_THUMP_SND, NODE_32, 30)
/************************************************/ /************************************************/
@ -135,7 +135,7 @@ DISCRETE_SOUND_START(asteroid)
DISCRETE_TRANSFORM4(NODE_42, ASTEROID_SAUCER_SEL, -250, NODE_41, 750, "01*2+3+") // Large saucer is 250hz lower DISCRETE_TRANSFORM4(NODE_42, ASTEROID_SAUCER_SEL, -250, NODE_41, 750, "01*2+3+") // Large saucer is 250hz lower
DISCRETE_TRIANGLEWAVE(NODE_43, ASTEROID_SAUCER_SND_EN, NODE_42, 76.1, 0, 0) DISCRETE_TRIANGLEWAVE(NODE_43, ASTEROID_SAUCER_SND_EN, NODE_42, 76.1, 0, 0)
DISCRETE_RCFILTER(ASTEROID_SAUCER_SND, 1, NODE_43, 1, 1.0e-5) DISCRETE_RCFILTER(ASTEROID_SAUCER_SND, NODE_43, 1, 1.0e-5)
/************************************************/ /************************************************/
/* The Ship Fire sound is produced by a 555 */ /* The Ship Fire sound is produced by a 555 */
@ -147,7 +147,7 @@ DISCRETE_SOUND_START(asteroid)
DISCRETE_ADDER2(NODE_52, 1, NODE_51, 7.0) /* Amplitude */ DISCRETE_ADDER2(NODE_52, 1, NODE_51, 7.0) /* Amplitude */
DISCRETE_TRANSFORM3(NODE_53, 4500, NODE_50, 67, "01/2+") /* Duty */ DISCRETE_TRANSFORM3(NODE_53, 4500, NODE_50, 67, "01/2+") /* Duty */
DISCRETE_SQUAREWAVE(NODE_54, ASTEROID_SHIP_FIRE_EN, NODE_50, NODE_52, NODE_53, 0, 0) DISCRETE_SQUAREWAVE(NODE_54, ASTEROID_SHIP_FIRE_EN, NODE_50, NODE_52, NODE_53, 0, 0)
DISCRETE_RCFILTER(ASTEROID_SHIP_FIRE_SND, 1, NODE_54, 1, 1.0e-5) DISCRETE_RCFILTER(ASTEROID_SHIP_FIRE_SND, NODE_54, 1, 1.0e-5)
/************************************************/ /************************************************/
/* The Saucer Fire sound is produced by a 555 */ /* The Saucer Fire sound is produced by a 555 */
@ -159,7 +159,7 @@ DISCRETE_SOUND_START(asteroid)
DISCRETE_ADDER2(NODE_62, 1, NODE_61, 7.0) /* Amplitude */ DISCRETE_ADDER2(NODE_62, 1, NODE_61, 7.0) /* Amplitude */
DISCRETE_TRANSFORM3(NODE_63, 4500, NODE_60, 67, "01/2+") /* Duty */ DISCRETE_TRANSFORM3(NODE_63, 4500, NODE_60, 67, "01/2+") /* Duty */
DISCRETE_SQUAREWAVE(NODE_64, ASTEROID_SAUCER_FIRE_EN, NODE_60, NODE_62, NODE_63, 0, 0) DISCRETE_SQUAREWAVE(NODE_64, ASTEROID_SAUCER_FIRE_EN, NODE_60, NODE_62, NODE_63, 0, 0)
DISCRETE_RCFILTER(ASTEROID_SAUCER_FIRE_SND, 1, NODE_64, 2, 1.0e-5) DISCRETE_RCFILTER(ASTEROID_SAUCER_FIRE_SND, NODE_64, 2, 1.0e-5)
/************************************************/ /************************************************/
/* Thrust noise is a gated noise source */ /* Thrust noise is a gated noise source */
@ -171,11 +171,12 @@ DISCRETE_SOUND_START(asteroid)
DISCRETE_LFSR_NOISE(ASTEROID_NOISE, ASTEROID_NOISE_RESET, ASTEROID_NOISE_RESET, 12000.0, 1.0, 0, 0, &asteroid_lfsr) DISCRETE_LFSR_NOISE(ASTEROID_NOISE, ASTEROID_NOISE_RESET, ASTEROID_NOISE_RESET, 12000.0, 1.0, 0, 0, &asteroid_lfsr)
DISCRETE_GAIN(NODE_70, ASTEROID_NOISE, 600.0*7.6) DISCRETE_GAIN(NODE_70, ASTEROID_NOISE, 600.0*7.6)
DISCRETE_RCFILTER(NODE_71, ASTEROID_THRUST_EN, NODE_70, 2200, 1e-6) DISCRETE_RCFILTER(NODE_71, NODE_70, 2200, 1e-6)
DISCRETE_MULTIPLY(NODE_72, NODE_71, ASTEROID_THRUST_EN)
/* TBD - replace this line with a Sallen-Key Bandpass macro */ /* TBD - replace this line with a Sallen-Key Bandpass macro */
DISCRETE_FILTER2(NODE_72, 1, NODE_71, 89.5, (1.0 / 7.6), DISC_FILTER_BANDPASS) DISCRETE_FILTER2(NODE_73, 1, NODE_72, 89.5, (1.0 / 7.6), DISC_FILTER_BANDPASS)
/* TBD - replace this line with a Active Lowpass macro */ /* TBD - replace this line with a Active Lowpass macro */
DISCRETE_FILTER1(ASTEROID_THRUST_SND, 1, NODE_72, 160, DISC_FILTER_LOWPASS) DISCRETE_FILTER1(ASTEROID_THRUST_SND, 1, NODE_73, 160, DISC_FILTER_LOWPASS)
/************************************************/ /************************************************/
/* Explosion generation circuit, pitch and vol */ /* Explosion generation circuit, pitch and vol */
@ -195,7 +196,7 @@ DISCRETE_SOUND_START(asteroid)
DISCRETE_SQUAREWFIX(NODE_82, 1, NODE_80, 1.0, NODE_81, 1.0/2, 0) /* Pitch clock */ DISCRETE_SQUAREWFIX(NODE_82, 1, NODE_80, 1.0, NODE_81, 1.0/2, 0) /* Pitch clock */
DISCRETE_SAMPLHOLD(NODE_83, ASTEROID_NOISE, NODE_82, DISC_SAMPHOLD_REDGE) DISCRETE_SAMPLHOLD(NODE_83, ASTEROID_NOISE, NODE_82, DISC_SAMPHOLD_REDGE)
DISCRETE_MULTIPLY(NODE_84, NODE_83, ASTEROID_EXPLODE_DATA) DISCRETE_MULTIPLY(NODE_84, NODE_83, ASTEROID_EXPLODE_DATA)
DISCRETE_RCFILTER(ASTEROID_EXPLODE_SND, 1, NODE_84, 3042, 1e-6) DISCRETE_RCFILTER(ASTEROID_EXPLODE_SND, NODE_84, 3042, 1e-6)
/************************************************/ /************************************************/
/* Life enable is just 3KHz tone from the clock */ /* Life enable is just 3KHz tone from the clock */
@ -241,11 +242,12 @@ DISCRETE_SOUND_START(astdelux)
DISCRETE_LFSR_NOISE(ASTEROID_NOISE, ASTEROID_NOISE_RESET, ASTEROID_NOISE_RESET, 12000.0, 1.0, 0, 0, &asteroid_lfsr) DISCRETE_LFSR_NOISE(ASTEROID_NOISE, ASTEROID_NOISE_RESET, ASTEROID_NOISE_RESET, 12000.0, 1.0, 0, 0, &asteroid_lfsr)
DISCRETE_GAIN(NODE_70, ASTEROID_NOISE, 1000.0*7.6) DISCRETE_GAIN(NODE_70, ASTEROID_NOISE, 1000.0*7.6)
DISCRETE_RCFILTER(NODE_71, ASTEROID_THRUST_EN, NODE_70, 2200, 1e-6) DISCRETE_RCFILTER(NODE_71, NODE_70, 2200, 1e-6)
DISCRETE_MULTIPLY(NODE_72, NODE_71, ASTEROID_THRUST_EN)
/* TBD - replace this line with a Sallen-Key Bandpass macro */ /* TBD - replace this line with a Sallen-Key Bandpass macro */
DISCRETE_FILTER2(NODE_72, 1, NODE_71, 89.5, (1.0 / 7.6), DISC_FILTER_BANDPASS) DISCRETE_FILTER2(NODE_73, 1, NODE_72, 89.5, (1.0 / 7.6), DISC_FILTER_BANDPASS)
/* TBD - replace this line with a Active Lowpass macro */ /* TBD - replace this line with a Active Lowpass macro */
DISCRETE_FILTER1(ASTEROID_THRUST_SND, 1, NODE_72, 160, DISC_FILTER_LOWPASS) DISCRETE_FILTER1(ASTEROID_THRUST_SND, 1, NODE_73, 160, DISC_FILTER_LOWPASS)
/************************************************/ /************************************************/
/* Explosion generation circuit, pitch and vol */ /* Explosion generation circuit, pitch and vol */
@ -265,7 +267,7 @@ DISCRETE_SOUND_START(astdelux)
DISCRETE_SQUAREWFIX(NODE_82, 1, NODE_80, 1.0, NODE_81, 1.0/2, 0) /* Pitch clock */ DISCRETE_SQUAREWFIX(NODE_82, 1, NODE_80, 1.0, NODE_81, 1.0/2, 0) /* Pitch clock */
DISCRETE_SAMPLHOLD(NODE_83, ASTEROID_NOISE, NODE_82, DISC_SAMPHOLD_REDGE) DISCRETE_SAMPLHOLD(NODE_83, ASTEROID_NOISE, NODE_82, DISC_SAMPHOLD_REDGE)
DISCRETE_MULTIPLY(NODE_84, NODE_83, ASTEROID_EXPLODE_DATA) DISCRETE_MULTIPLY(NODE_84, NODE_83, ASTEROID_EXPLODE_DATA)
DISCRETE_RCFILTER(ASTEROID_EXPLODE_SND, 1, NODE_84, 3042, 1e-6) DISCRETE_RCFILTER(ASTEROID_EXPLODE_SND, NODE_84, 3042, 1e-6)
/************************************************/ /************************************************/
/* Combine all 7 sound sources with a double */ /* Combine all 7 sound sources with a double */

View File

@ -117,7 +117,7 @@ DISCRETE_SOUND_START(avalnche)
/************************************************/ /************************************************/
DISCRETE_LFSR_NOISE(AVALNCHE_NOISE, AVALNCHE_ATTRACT_EN, AVALNCHE_ATTRACT_EN, 15750.0, AVALNCHE_SOUNDLVL_DATA, 0, 0, &avalnche_lfsr) DISCRETE_LFSR_NOISE(AVALNCHE_NOISE, AVALNCHE_ATTRACT_EN, AVALNCHE_ATTRACT_EN, 15750.0, AVALNCHE_SOUNDLVL_DATA, 0, 0, &avalnche_lfsr)
DISCRETE_ADDER2(NODE_30, 1, NODE_20, AVALNCHE_NOISE) DISCRETE_ADDER2(NODE_30, 1, NODE_20, AVALNCHE_NOISE)
DISCRETE_RCFILTER(AVALNCHE_SOUNDLVL_AUD0_SND, 1, NODE_30, 556.7, 1e-7) DISCRETE_RCFILTER(AVALNCHE_SOUNDLVL_AUD0_SND, NODE_30, 556.7, 1e-7)
/************************************************/ /************************************************/
/* Final mix and output. */ /* Final mix and output. */

View File

@ -31,7 +31,7 @@ DISCRETE_SOUND_START(blockade)
/* oscillator to 0Hz. (OUT02 = FF) */ /* oscillator to 0Hz. (OUT02 = FF) */
/************************************************/ /************************************************/
DISCRETE_NOTE(BLOCKADE_NOTE, 1, 93681.5, BLOCKADE_NOTE_DATA, 255, 1, DISC_CLK_IS_FREQ | DISC_OUT_IS_ENERGY) DISCRETE_NOTE(BLOCKADE_NOTE, 1, 93681.5, BLOCKADE_NOTE_DATA, 255, 1, DISC_CLK_IS_FREQ | DISC_OUT_IS_ENERGY)
DISCRETE_CRFILTER(NODE_10, 1, BLOCKADE_NOTE, RES_K(35), CAP_U(.01)) DISCRETE_CRFILTER(NODE_10, BLOCKADE_NOTE, RES_K(35), CAP_U(.01))
DISCRETE_OUTPUT(NODE_10, 7500) DISCRETE_OUTPUT(NODE_10, 7500)
DISCRETE_SOUND_END DISCRETE_SOUND_END

View File

@ -122,21 +122,21 @@ DISCRETE_SOUND_START(canyon)
/* This adjusts the high end. */ /* This adjusts the high end. */
/* 0k = 214Hz. 250k = 4416Hz */ /* 0k = 214Hz. 250k = 4416Hz */
/************************************************/ /************************************************/
DISCRETE_RCFILTER(NODE_20, 1, CANYON_MOTOR1_DATA, 123000, 1e-6) DISCRETE_RCFILTER(NODE_20, CANYON_MOTOR1_DATA, 123000, 1e-6)
DISCRETE_ADJUSTMENT_TAG(NODE_21, (214.0-27.0)/12/15, (4416.0-27.0)/12/15, DISC_LOGADJ, "MOTOR1") DISCRETE_ADJUSTMENT_TAG(NODE_21, (214.0-27.0)/12/15, (4416.0-27.0)/12/15, DISC_LOGADJ, "MOTOR1")
DISCRETE_MULTIPLY(NODE_22, NODE_20, NODE_21) DISCRETE_MULTIPLY(NODE_22, NODE_20, NODE_21)
DISCRETE_MULTADD(NODE_23, NODE_22, 2, 27.0/6) /* F1 = /12*2 = /6 */ DISCRETE_MULTADD(NODE_23, NODE_22, 2, 27.0/6) /* F1 = /12*2 = /6 */
DISCRETE_SQUAREWAVE(NODE_24, 1, NODE_23, (142.9/3), 50.0, 0, 0) DISCRETE_SQUAREWAVE(NODE_24, 1, NODE_23, (142.9/3), 50.0, 0, 0)
DISCRETE_RCFILTER(NODE_25, 1, NODE_24, 10000, 1e-7) DISCRETE_RCFILTER(NODE_25, NODE_24, 10000, 1e-7)
DISCRETE_MULTADD(NODE_26, NODE_22, 3, 27.0/4) /* F2 = /12*3 = /4 */ DISCRETE_MULTADD(NODE_26, NODE_22, 3, 27.0/4) /* F2 = /12*3 = /4 */
DISCRETE_SQUAREWAVE(NODE_27, 1, NODE_26, (142.9/3), 50.0, 0, 0) DISCRETE_SQUAREWAVE(NODE_27, 1, NODE_26, (142.9/3), 50.0, 0, 0)
DISCRETE_RCFILTER(NODE_28, 1, NODE_27, 10000, 1e-7) DISCRETE_RCFILTER(NODE_28, NODE_27, 10000, 1e-7)
DISCRETE_MULTADD(NODE_29, NODE_22, 4, 27.0/3) /* F3 = /12*4 = /3 */ DISCRETE_MULTADD(NODE_29, NODE_22, 4, 27.0/3) /* F3 = /12*4 = /3 */
DISCRETE_SQUAREWAVE(NODE_30, 1, NODE_29, (142.9/3), 100.0/3, 0, 360.0/3) DISCRETE_SQUAREWAVE(NODE_30, 1, NODE_29, (142.9/3), 100.0/3, 0, 360.0/3)
DISCRETE_RCFILTER(NODE_31, 1, NODE_30, 10000, 1e-7) DISCRETE_RCFILTER(NODE_31, NODE_30, 10000, 1e-7)
DISCRETE_ADDER3(CANYON_MOTORSND1, CANYON_ATTRACT1_EN, NODE_25, NODE_28, NODE_31) DISCRETE_ADDER3(CANYON_MOTORSND1, CANYON_ATTRACT1_EN, NODE_25, NODE_28, NODE_31)
@ -145,21 +145,21 @@ DISCRETE_SOUND_START(canyon)
/* for 1. But I shifted the frequencies up for */ /* for 1. But I shifted the frequencies up for */
/* it to sound different from motor 1. */ /* it to sound different from motor 1. */
/************************************************/ /************************************************/
DISCRETE_RCFILTER(NODE_40, 1, CANYON_MOTOR2_DATA, 123000, 1e-6) DISCRETE_RCFILTER(NODE_40, CANYON_MOTOR2_DATA, 123000, 1e-6)
DISCRETE_ADJUSTMENT_TAG(NODE_41, (214.0-27.0)/12/15, (4416.0-27.0)/12/15, DISC_LOGADJ, "MOTOR2") DISCRETE_ADJUSTMENT_TAG(NODE_41, (214.0-27.0)/12/15, (4416.0-27.0)/12/15, DISC_LOGADJ, "MOTOR2")
DISCRETE_MULTIPLY(NODE_42, NODE_40, NODE_41) DISCRETE_MULTIPLY(NODE_42, NODE_40, NODE_41)
DISCRETE_MULTADD(NODE_43, NODE_42, 2, 27.0/6) /* F1 = /12*2 = /6 */ DISCRETE_MULTADD(NODE_43, NODE_42, 2, 27.0/6) /* F1 = /12*2 = /6 */
DISCRETE_SQUAREWAVE(NODE_44, 1, NODE_43, (142.9/3), 50.0, 0, 0) DISCRETE_SQUAREWAVE(NODE_44, 1, NODE_43, (142.9/3), 50.0, 0, 0)
DISCRETE_RCFILTER(NODE_45, 1, NODE_44, 10000, 1e-7) DISCRETE_RCFILTER(NODE_45, NODE_44, 10000, 1e-7)
DISCRETE_MULTADD(NODE_46, NODE_42, 3, 27.0/4) /* F2 = /12*3 = /4 */ DISCRETE_MULTADD(NODE_46, NODE_42, 3, 27.0/4) /* F2 = /12*3 = /4 */
DISCRETE_SQUAREWAVE(NODE_47, 1, NODE_46, (142.9/3), 50.0, 0, 0) DISCRETE_SQUAREWAVE(NODE_47, 1, NODE_46, (142.9/3), 50.0, 0, 0)
DISCRETE_RCFILTER(NODE_48, 1, NODE_47, 10000, 1e-7) DISCRETE_RCFILTER(NODE_48, NODE_47, 10000, 1e-7)
DISCRETE_MULTADD(NODE_49, NODE_42, 4, 27.0/3) /* F3 = /12*4 = /3 */ DISCRETE_MULTADD(NODE_49, NODE_42, 4, 27.0/3) /* F3 = /12*4 = /3 */
DISCRETE_SQUAREWAVE(NODE_50, 1, NODE_49, (142.9/3), 100.0/3, 0, 360.0/3) DISCRETE_SQUAREWAVE(NODE_50, 1, NODE_49, (142.9/3), 100.0/3, 0, 360.0/3)
DISCRETE_RCFILTER(NODE_51, 1, NODE_50, 10000, 1e-7) DISCRETE_RCFILTER(NODE_51, NODE_50, 10000, 1e-7)
DISCRETE_ADDER3(CANYON_MOTORSND2, CANYON_ATTRACT2_EN, NODE_45, NODE_48, NODE_51) DISCRETE_ADDER3(CANYON_MOTORSND2, CANYON_ATTRACT2_EN, NODE_45, NODE_48, NODE_51)
@ -176,7 +176,7 @@ DISCRETE_SOUND_START(canyon)
DISCRETE_LFSR_NOISE(CANYON_NOISE, NODE_60, NODE_60, 15750.0/4, 1.0, 0, 0, &canyon_lfsr) DISCRETE_LFSR_NOISE(CANYON_NOISE, NODE_60, NODE_60, 15750.0/4, 1.0, 0, 0, &canyon_lfsr)
DISCRETE_MULTIPLY(NODE_61, CANYON_NOISE, CANYON_EXPLODE_DATA) DISCRETE_MULTIPLY(NODE_61, CANYON_NOISE, CANYON_EXPLODE_DATA)
DISCRETE_RCFILTER(CANYON_EXPLODESND, 1, NODE_61, 545, 5e-6) DISCRETE_RCFILTER(CANYON_EXPLODESND, NODE_61, 545, 5e-6)
/************************************************/ /************************************************/
/* Whistle circuit is a 555 capacitor charge */ /* Whistle circuit is a 555 capacitor charge */

View File

@ -79,7 +79,7 @@ DISCRETE_SOUND_START(circus)
/************************************************/ /************************************************/
/* Music is just a 1 bit DAC */ /* Music is just a 1 bit DAC */
/************************************************/ /************************************************/
DISCRETE_CRFILTER(CIRCUS_MUSIC_SND, 1, CIRCUS_MUSIC_BIT, RES_K(50), CAP_U(.1)) /* 50K is just an average value */ DISCRETE_CRFILTER(CIRCUS_MUSIC_SND, CIRCUS_MUSIC_BIT, RES_K(50), CAP_U(.1)) /* 50K is just an average value */
DISCRETE_OUTPUT(CIRCUS_MUSIC_SND, 1) DISCRETE_OUTPUT(CIRCUS_MUSIC_SND, 1)
DISCRETE_SOUND_END DISCRETE_SOUND_END
@ -161,8 +161,8 @@ DISCRETE_SOUND_START(robotbwl)
/************************************************/ /************************************************/
/* Music is just a 1 bit DAC */ /* Music is just a 1 bit DAC */
/************************************************/ /************************************************/
DISCRETE_RCFILTER(NODE_20, 1, ROBOTBWL_MUSIC_BIT, RES_K(10), CAP_U(.47)) DISCRETE_RCFILTER(NODE_20, ROBOTBWL_MUSIC_BIT, RES_K(10), CAP_U(.47))
DISCRETE_CRFILTER(ROBOTBWL_MUSIC_SND, 1, NODE_20, RES_K(10) + RES_K(22), CAP_U(.1)) DISCRETE_CRFILTER(ROBOTBWL_MUSIC_SND, NODE_20, RES_K(10) + RES_K(22), CAP_U(.1))
DISCRETE_OUTPUT(ROBOTBWL_MUSIC_SND, 1) DISCRETE_OUTPUT(ROBOTBWL_MUSIC_SND, 1)
DISCRETE_SOUND_END DISCRETE_SOUND_END

View File

@ -37,8 +37,8 @@ DISCRETE_SOUND_START(cliffhgr)
DISCRETE_ONOFF(NODE_05,CLIFF_ENABLE_SND_1,NODE_03) DISCRETE_ONOFF(NODE_05,CLIFF_ENABLE_SND_1,NODE_03)
DISCRETE_ONOFF(NODE_06,CLIFF_ENABLE_SND_2,NODE_04) DISCRETE_ONOFF(NODE_06,CLIFF_ENABLE_SND_2,NODE_04)
DISCRETE_RCFILTER(NODE_07,1,NODE_05,1.0/(1.0/RES_K(4.7)+1.0/RES_K(10)), CAP_U(0.1)) DISCRETE_RCFILTER(NODE_07,NODE_05,1.0/(1.0/RES_K(4.7)+1.0/RES_K(10)), CAP_U(0.1))
DISCRETE_RCFILTER(NODE_08,1,NODE_06,1.0/(1.0/RES_K(5.1)+1.0/RES_K(12)), CAP_U(0.1)) DISCRETE_RCFILTER(NODE_08,NODE_06,1.0/(1.0/RES_K(5.1)+1.0/RES_K(12)), CAP_U(0.1))
DISCRETE_GAIN(NODE_09,NODE_07,RES_K(10)/(RES_K(4.7)+RES_K(10))) DISCRETE_GAIN(NODE_09,NODE_07,RES_K(10)/(RES_K(4.7)+RES_K(10)))
DISCRETE_GAIN(NODE_10,NODE_08,RES_K(12)/(RES_K(5.1)+RES_K(12))) DISCRETE_GAIN(NODE_10,NODE_08,RES_K(12)/(RES_K(5.1)+RES_K(12)))

View File

@ -105,14 +105,14 @@ static DISCRETE_SOUND_START(crbaloon)
* square wave. * square wave.
************************************************/ ************************************************/
DISCRETE_555_ASTABLE(NODE_10, 1, RES_K(10), RES_K(100), CAP_U(1), &desc_crbaloon_laugh_osc) DISCRETE_555_ASTABLE(NODE_10, 1, RES_K(10), RES_K(100), CAP_U(1), &desc_crbaloon_laugh_osc)
DISCRETE_CRFILTER_VREF(NODE_11, 1, NODE_10, DISCRETE_CRFILTER_VREF(NODE_11, NODE_10,
1.0/(1.0/RES_K(5) + 1.0/RES_K(10) + 1.0/RES_K(100)), // 5k & 10k are 555 internal 1.0/(1.0/RES_K(5) + 1.0/RES_K(10) + 1.0/RES_K(100)), // 5k & 10k are 555 internal
CAP_U(10), CAP_U(10),
/* The following will calculate the reference control voltage with no signal applied to the cap. */ /* The following will calculate the reference control voltage with no signal applied to the cap. */
5.0* (1.0/(1.0/RES_K(10) + 1.0/RES_K(100))) / (RES_K(5)+(1.0/(1.0/RES_K(10) + 1.0/RES_K(100)))) ) 5.0* (1.0/(1.0/RES_K(10) + 1.0/RES_K(100))) / (RES_K(5)+(1.0/(1.0/RES_K(10) + 1.0/RES_K(100)))) )
DISCRETE_555_ASTABLE_CV(NODE_12, CRBALOON_LAUGH_EN, RES_K(1), RES_K(22), CAP_U(.1), NODE_11, &desc_crbaloon_laugh_osc) DISCRETE_555_ASTABLE_CV(NODE_12, CRBALOON_LAUGH_EN, RES_K(1), RES_K(22), CAP_U(.1), NODE_11, &desc_crbaloon_laugh_osc)
DISCRETE_MULTIPLY(NODE_13, NODE_12, CRBALOON_VR2) DISCRETE_MULTIPLY(NODE_13, NODE_12, CRBALOON_VR2)
DISCRETE_CRFILTER(CRBALOON_LAUGH_SND, 1, NODE_13, RES_K(20), CAP_U(1)) DISCRETE_CRFILTER(CRBALOON_LAUGH_SND, NODE_13, RES_K(20), CAP_U(1))
/************************************************ /************************************************
* Music Generator is amplitude modulated by a * Music Generator is amplitude modulated by a
@ -124,13 +124,13 @@ static DISCRETE_SOUND_START(crbaloon)
DISCRETE_ONOFF(NODE_22, CRBALOON_MUSIC_EN, NODE_21) DISCRETE_ONOFF(NODE_22, CRBALOON_MUSIC_EN, NODE_21)
// DISCRETE_RAMP(NODE_21, 1, RAMP, GRAD, MIN, MAX, CLAMP) // DISCRETE_RAMP(NODE_21, 1, RAMP, GRAD, MIN, MAX, CLAMP)
DISCRETE_MULTIPLY(NODE_23, NODE_22, CRBALOON_VR3) DISCRETE_MULTIPLY(NODE_23, NODE_22, CRBALOON_VR3)
DISCRETE_CRFILTER(CRBALOON_MUSIC_SND, 1, NODE_23, RES_K(50), CAP_U(1)) DISCRETE_CRFILTER(CRBALOON_MUSIC_SND, NODE_23, RES_K(50), CAP_U(1))
/************************************************ /************************************************
* Final mix and output. * Final mix and output.
************************************************/ ************************************************/
DISCRETE_ADDER2(NODE_90, 1, CRBALOON_LAUGH_SND, CRBALOON_MUSIC_SND) DISCRETE_ADDER2(NODE_90, 1, CRBALOON_LAUGH_SND, CRBALOON_MUSIC_SND)
DISCRETE_CRFILTER(NODE_91, 1, NODE_90, RES_K(100), CAP_U(1)) DISCRETE_CRFILTER(NODE_91, NODE_90, RES_K(100), CAP_U(1))
DISCRETE_OUTPUT(NODE_91, 65000.0/12) DISCRETE_OUTPUT(NODE_91, 65000.0/12)

View File

@ -439,7 +439,7 @@ static DISCRETE_SOUND_START(dkong2b)
/* Trigger */ /* Trigger */
DISCRETE_RCDISC_MODULATED(NODE_60,DS_SOUND0_INV,NODE_55,DK_R36,DK_R18,DK_R35,DK_R17,DK_C25,DK_SUP_V) DISCRETE_RCDISC_MODULATED(NODE_60,DS_SOUND0_INV,NODE_55,DK_R36,DK_R18,DK_R35,DK_R17,DK_C25,DK_SUP_V)
/* Filter and divide - omitted C22 */ /* Filter and divide - omitted C22 */
DISCRETE_CRFILTER(NODE_61, 1, NODE_60, DK_R15+DK_R16, DK_C23) DISCRETE_CRFILTER(NODE_61, NODE_60, DK_R15+DK_R16, DK_C23)
DISCRETE_MULTIPLY(DS_OUT_SOUND2, NODE_61, DK_R15/(DK_R15+DK_R16)) DISCRETE_MULTIPLY(DS_OUT_SOUND2, NODE_61, DK_R15/(DK_R15+DK_R16))
DISCRETE_TASK_END() DISCRETE_TASK_END()
@ -486,10 +486,10 @@ static DISCRETE_SOUND_START(dkong2b)
/* Amplifier: internal amplifier */ /* Amplifier: internal amplifier */
DISCRETE_ADDER2(NODE_289,1,NODE_288,5.0*43.0/(100.0+43.0)) DISCRETE_ADDER2(NODE_289,1,NODE_288,5.0*43.0/(100.0+43.0))
DISCRETE_RCINTEGRATE(NODE_294,NODE_289,0,150,1000, CAP_U(33),DK_SUP_V,DISC_RC_INTEGRATE_TYPE3) DISCRETE_RCINTEGRATE(NODE_294,NODE_289,0,150,1000, CAP_U(33),DK_SUP_V,DISC_RC_INTEGRATE_TYPE3)
DISCRETE_CRFILTER(NODE_295,1,NODE_294, RES_K(50), DK_C13) DISCRETE_CRFILTER(NODE_295,NODE_294, RES_K(50), DK_C13)
/*DISCRETE_CRFILTER(NODE_295,1,NODE_294, 1000, DK_C13) */ /*DISCRETE_CRFILTER(NODE_295,1,NODE_294, 1000, DK_C13) */
/* EZV20 equivalent filter circuit ... */ /* EZV20 equivalent filter circuit ... */
DISCRETE_CRFILTER(NODE_296,1,NODE_295, RES_K(1), CAP_U(4.7)) DISCRETE_CRFILTER(NODE_296,NODE_295, RES_K(1), CAP_U(4.7))
#if DK_NO_FILTERS #if DK_NO_FILTERS
DISCRETE_OUTPUT(NODE_288, 32767.0/5.0 * 10) DISCRETE_OUTPUT(NODE_288, 32767.0/5.0 * 10)
#else #else
@ -704,7 +704,7 @@ static DISCRETE_SOUND_START(radarscp)
DISCRETE_555_ASTABLE_CV(NODE_43, DS_SOUND6, RES_K(47), RES_K(27), RS_C49, NODE_42, &radarscp_555_vco_desc) DISCRETE_555_ASTABLE_CV(NODE_43, DS_SOUND6, RES_K(47), RES_K(27), RS_C49, NODE_42, &radarscp_555_vco_desc)
DISCRETE_RCDISC_MODULATED(NODE_44,DS_SOUND0_INV,NODE_43,RS_R39,RS_R18,RS_R37,RS_R38,RS_C22,DK_SUP_V) DISCRETE_RCDISC_MODULATED(NODE_44,DS_SOUND0_INV,NODE_43,RS_R39,RS_R18,RS_R37,RS_R38,RS_C22,DK_SUP_V)
DISCRETE_CRFILTER(NODE_45, 1, NODE_44, RS_R15+RS_R16, RS_C33) DISCRETE_CRFILTER(NODE_45, NODE_44, RS_R15+RS_R16, RS_C33)
DISCRETE_MULTIPLY(DS_OUT_SOUND0, NODE_45, RS_R15/(RS_R15+RS_R16)) DISCRETE_MULTIPLY(DS_OUT_SOUND0, NODE_45, RS_R15/(RS_R15+RS_R16))
/************************************************/ /************************************************/
@ -721,7 +721,7 @@ static DISCRETE_SOUND_START(radarscp)
DISCRETE_RCINTEGRATE(NODE_55,NODE_52,RS_R46, RS_R46,0,RS_C45,DK_SUP_V,DISC_RC_INTEGRATE_TYPE1) DISCRETE_RCINTEGRATE(NODE_55,NODE_52,RS_R46, RS_R46,0,RS_C45,DK_SUP_V,DISC_RC_INTEGRATE_TYPE1)
DISCRETE_TRANSFORM4(NODE_56, NODE_55, DS_SOUND7,NODE_54,2.5, "01*23<*") DISCRETE_TRANSFORM4(NODE_56, NODE_55, DS_SOUND7,NODE_54,2.5, "01*23<*")
DISCRETE_CRFILTER(NODE_57, 1, NODE_56, RS_R43+RS_R44, RS_C46) DISCRETE_CRFILTER(NODE_57, NODE_56, RS_R43+RS_R44, RS_C46)
DISCRETE_MULTIPLY(DS_OUT_SOUND7, NODE_57, RS_R44/(RS_R43+RS_R44)) DISCRETE_MULTIPLY(DS_OUT_SOUND7, NODE_57, RS_R44/(RS_R43+RS_R44))
/************************************************/ /************************************************/
@ -753,7 +753,7 @@ static DISCRETE_SOUND_START(radarscp)
/* Amplifier: internal amplifier */ /* Amplifier: internal amplifier */
DISCRETE_ADDER2(NODE_289,1,NODE_288,5.0*43.0/(100.0+43.0)) DISCRETE_ADDER2(NODE_289,1,NODE_288,5.0*43.0/(100.0+43.0))
DISCRETE_RCINTEGRATE(NODE_294,NODE_289,0,150,1000, CAP_U(33),DK_SUP_V,DISC_RC_INTEGRATE_TYPE3) DISCRETE_RCINTEGRATE(NODE_294,NODE_289,0,150,1000, CAP_U(33),DK_SUP_V,DISC_RC_INTEGRATE_TYPE3)
DISCRETE_CRFILTER(NODE_295,1,NODE_294, 1000, DK_C13) DISCRETE_CRFILTER(NODE_295,NODE_294, 1000, DK_C13)
DISCRETE_OUTPUT(NODE_295, 32767.0/5.0 * 3) DISCRETE_OUTPUT(NODE_295, 32767.0/5.0 * 3)
DISCRETE_SOUND_END DISCRETE_SOUND_END
@ -894,13 +894,13 @@ DISCRETE_TASK_START(1)
DISCRETE_LS123(NODE_110, DS_SOUND0_INV, JR_R8, JR_C14) DISCRETE_LS123(NODE_110, DS_SOUND0_INV, JR_R8, JR_C14)
DISCRETE_TRANSFORM2(NODE_111, TTL_HIGH, NODE_110, "01-") DISCRETE_TRANSFORM2(NODE_111, TTL_HIGH, NODE_110, "01-")
DISCRETE_RCFILTER(NODE_112, 1, NODE_111, JR_R10, JR_C17) DISCRETE_RCFILTER(NODE_112, NODE_111, JR_R10, JR_C17)
DISCRETE_74LS624(NODE_113, NODE_112, DK_SUP_V, JR_C18, DISC_LS624_OUT_ENERGY) DISCRETE_74LS624(NODE_113, NODE_112, DK_SUP_V, JR_C18, DISC_LS624_OUT_ENERGY)
DISCRETE_LOGIC_XOR(NODE_115, NODE_105, NODE_106) DISCRETE_LOGIC_XOR(NODE_115, NODE_105, NODE_106)
DISCRETE_TRANSFORM2(NODE_116, NODE_107, TTL_HIGH, "0!1*") DISCRETE_TRANSFORM2(NODE_116, NODE_107, TTL_HIGH, "0!1*")
DISCRETE_RCFILTER(NODE_117, 1, NODE_116, JR_R11, JR_C16) DISCRETE_RCFILTER(NODE_117, NODE_116, JR_R11, JR_C16)
DISCRETE_74LS624(NODE_118, NODE_117, DK_SUP_V, JR_C19, DISC_LS624_OUT_COUNT_F) DISCRETE_74LS624(NODE_118, NODE_117, DK_SUP_V, JR_C19, DISC_LS624_OUT_COUNT_F)
DISCRETE_LOGIC_NAND(NODE_120, NODE_115, NODE_110) DISCRETE_LOGIC_NAND(NODE_120, NODE_115, NODE_110)
@ -921,8 +921,8 @@ DISCRETE_TASK_START(1)
/* The following circuit does not match 100%, however works. /* The following circuit does not match 100%, however works.
* To be exact, we need a C-R-C-R circuit, we actually do not have. * To be exact, we need a C-R-C-R circuit, we actually do not have.
*/ */
DISCRETE_CRFILTER_VREF(NODE_16, 1, NODE_15, JR_R4, JR_C23, 2.5) DISCRETE_CRFILTER_VREF(NODE_16, NODE_15, JR_R4, JR_C23, 2.5)
DISCRETE_RCFILTER(DS_OUT_SOUND1, 1, NODE_16, JR_R19, JR_C21) DISCRETE_RCFILTER(DS_OUT_SOUND1, NODE_16, JR_R19, JR_C21)
DISCRETE_TASK_END() DISCRETE_TASK_END()
/************************************************/ /************************************************/
@ -937,8 +937,8 @@ DISCRETE_TASK_START(1)
/* The following circuit does not match 100%, however works. /* The following circuit does not match 100%, however works.
* To be exact, we need a C-R-C-R circuit, we actually do not have. * To be exact, we need a C-R-C-R circuit, we actually do not have.
*/ */
DISCRETE_CRFILTER_VREF(NODE_27, 1, NODE_26, JR_R6, JR_C30, 2.5) DISCRETE_CRFILTER_VREF(NODE_27, NODE_26, JR_R6, JR_C30, 2.5)
DISCRETE_RCFILTER(DS_OUT_SOUND2, 1, NODE_27, JR_R2, JR_C25) DISCRETE_RCFILTER(DS_OUT_SOUND2, NODE_27, JR_R2, JR_C25)
DISCRETE_TASK_END() DISCRETE_TASK_END()
/************************************************/ /************************************************/
@ -947,7 +947,7 @@ DISCRETE_TASK_END()
DISCRETE_TASK_START(1) DISCRETE_TASK_START(1)
DISCRETE_LOGIC_INVERT(DS_SOUND9,DS_SOUND9_INV) DISCRETE_LOGIC_INVERT(DS_SOUND9,DS_SOUND9_INV)
DISCRETE_RCFILTER(NODE_90, 1, DS_SOUND9_INV, JR_R14, JR_C26) DISCRETE_RCFILTER(NODE_90, DS_SOUND9_INV, JR_R14, JR_C26)
DISCRETE_MULTIPLY(NODE_91, NODE_90, TTL_HIGH) DISCRETE_MULTIPLY(NODE_91, NODE_90, TTL_HIGH)
DISCRETE_74LS624( NODE_92, NODE_91, DK_SUP_V, JR_C37, DISC_LS624_OUT_ENERGY) DISCRETE_74LS624( NODE_92, NODE_91, DK_SUP_V, JR_C37, DISC_LS624_OUT_ENERGY)
DISCRETE_ENERGY_NAND(NODE_93, NODE_92, DS_SOUND9) DISCRETE_ENERGY_NAND(NODE_93, NODE_92, DS_SOUND9)
@ -986,7 +986,7 @@ DISCRETE_TASK_START(2)
/* Amplifier: internal amplifier /* Amplifier: internal amplifier
* Just a 1:n amplifier without filters - just the output filter * Just a 1:n amplifier without filters - just the output filter
*/ */
DISCRETE_CRFILTER(NODE_295,1,NODE_288, 1000, JR_C13) DISCRETE_CRFILTER(NODE_295,NODE_288, 1000, JR_C13)
DISCRETE_OUTPUT(NODE_295, 32767.0/5.0 * 10) DISCRETE_OUTPUT(NODE_295, 32767.0/5.0 * 10)
DISCRETE_TASK_END() DISCRETE_TASK_END()

View File

@ -91,21 +91,21 @@ DISCRETE_SOUND_START(dragrace)
/* 0k = 214Hz. 250k = 4416Hz */ /* 0k = 214Hz. 250k = 4416Hz */
/* NOTE: freqs are ripped from Sprint for now. */ /* NOTE: freqs are ripped from Sprint for now. */
/************************************************/ /************************************************/
DISCRETE_RCFILTER(NODE_20, 1, DRAGRACE_MOTOR1_DATA, 119898, 2.2e-6) DISCRETE_RCFILTER(NODE_20, DRAGRACE_MOTOR1_DATA, 119898, 2.2e-6)
DISCRETE_ADJUSTMENT_TAG(NODE_21, (214.0-27.0)/12/31, (4416.0-27.0)/12/31, DISC_LOGADJ, "MOTOR1") DISCRETE_ADJUSTMENT_TAG(NODE_21, (214.0-27.0)/12/31, (4416.0-27.0)/12/31, DISC_LOGADJ, "MOTOR1")
DISCRETE_MULTIPLY(NODE_22, NODE_20, NODE_21) DISCRETE_MULTIPLY(NODE_22, NODE_20, NODE_21)
DISCRETE_MULTADD(NODE_23, NODE_22, 2, 27.0/6) /* F1 = /12*2 = /6 */ DISCRETE_MULTADD(NODE_23, NODE_22, 2, 27.0/6) /* F1 = /12*2 = /6 */
DISCRETE_SQUAREWAVE(NODE_24, 1, NODE_23, (581.6/3), 50.0, 0, 0) DISCRETE_SQUAREWAVE(NODE_24, 1, NODE_23, (581.6/3), 50.0, 0, 0)
DISCRETE_RCFILTER(NODE_25, 1, NODE_24, 10000, 1e-7) DISCRETE_RCFILTER(NODE_25, NODE_24, 10000, 1e-7)
DISCRETE_MULTADD(NODE_26, NODE_22, 3, 27.0/4) /* F2 = /12*3 = /4 */ DISCRETE_MULTADD(NODE_26, NODE_22, 3, 27.0/4) /* F2 = /12*3 = /4 */
DISCRETE_SQUAREWAVE(NODE_27, 1, NODE_26, (581.6/3), 50.0, 0, 0) DISCRETE_SQUAREWAVE(NODE_27, 1, NODE_26, (581.6/3), 50.0, 0, 0)
DISCRETE_RCFILTER(NODE_28, 1, NODE_27, 10000, 1e-7) DISCRETE_RCFILTER(NODE_28, NODE_27, 10000, 1e-7)
DISCRETE_MULTADD(NODE_29, NODE_22, 4, 27.0/3) /* F3 = /12*4 = /3 */ DISCRETE_MULTADD(NODE_29, NODE_22, 4, 27.0/3) /* F3 = /12*4 = /3 */
DISCRETE_SQUAREWAVE(NODE_30, 1, NODE_29, (581.6/3), 100.0/3, 0, 360.0/3) DISCRETE_SQUAREWAVE(NODE_30, 1, NODE_29, (581.6/3), 100.0/3, 0, 360.0/3)
DISCRETE_RCFILTER(NODE_31, 1, NODE_30, 10000, 1e-7) DISCRETE_RCFILTER(NODE_31, NODE_30, 10000, 1e-7)
DISCRETE_ADDER3(DRAGRACE_MOTOR1_SND, DRAGRACE_MOTOR1_EN, NODE_25, NODE_28, NODE_31) DISCRETE_ADDER3(DRAGRACE_MOTOR1_SND, DRAGRACE_MOTOR1_EN, NODE_25, NODE_28, NODE_31)
@ -114,21 +114,21 @@ DISCRETE_SOUND_START(dragrace)
/* Car1. But I shifted the frequencies up for */ /* Car1. But I shifted the frequencies up for */
/* it to sound different from car1. */ /* it to sound different from car1. */
/************************************************/ /************************************************/
DISCRETE_RCFILTER(NODE_40, 1, DRAGRACE_MOTOR2_DATA, 119898, 2.2e-6) DISCRETE_RCFILTER(NODE_40, DRAGRACE_MOTOR2_DATA, 119898, 2.2e-6)
DISCRETE_ADJUSTMENT_TAG(NODE_41, (214.0-27.0)/12/31, (4416.0-27.0)/12/31, DISC_LOGADJ, "MOTOR2") DISCRETE_ADJUSTMENT_TAG(NODE_41, (214.0-27.0)/12/31, (4416.0-27.0)/12/31, DISC_LOGADJ, "MOTOR2")
DISCRETE_MULTIPLY(NODE_42, NODE_40, NODE_41) DISCRETE_MULTIPLY(NODE_42, NODE_40, NODE_41)
DISCRETE_MULTADD(NODE_43, NODE_42, 2, 27.0/6) /* F1 = /12*2 = /6 */ DISCRETE_MULTADD(NODE_43, NODE_42, 2, 27.0/6) /* F1 = /12*2 = /6 */
DISCRETE_SQUAREWAVE(NODE_44, 1, NODE_43, (581.6/3), 50.0, 0, 0) DISCRETE_SQUAREWAVE(NODE_44, 1, NODE_43, (581.6/3), 50.0, 0, 0)
DISCRETE_RCFILTER(NODE_45, 1, NODE_44, 10000, 1e-7) DISCRETE_RCFILTER(NODE_45, NODE_44, 10000, 1e-7)
DISCRETE_MULTADD(NODE_46, NODE_42, 3, 27.0/4) /* F2 = /12*3 = /4 */ DISCRETE_MULTADD(NODE_46, NODE_42, 3, 27.0/4) /* F2 = /12*3 = /4 */
DISCRETE_SQUAREWAVE(NODE_47, 1, NODE_46, (581.6/3), 50.0, 0, 0) DISCRETE_SQUAREWAVE(NODE_47, 1, NODE_46, (581.6/3), 50.0, 0, 0)
DISCRETE_RCFILTER(NODE_48, 1, NODE_47, 10000, 1e-7) DISCRETE_RCFILTER(NODE_48, NODE_47, 10000, 1e-7)
DISCRETE_MULTADD(NODE_49, NODE_42, 4, 27.0/3) /* F3 = /12*4 = /3 */ DISCRETE_MULTADD(NODE_49, NODE_42, 4, 27.0/3) /* F3 = /12*4 = /3 */
DISCRETE_SQUAREWAVE(NODE_50, 1, NODE_49, (581.6/3), 100.0/3, 0, 360.0/3) DISCRETE_SQUAREWAVE(NODE_50, 1, NODE_49, (581.6/3), 100.0/3, 0, 360.0/3)
DISCRETE_RCFILTER(NODE_51, 1, NODE_50, 10000, 1e-7) DISCRETE_RCFILTER(NODE_51, NODE_50, 10000, 1e-7)
DISCRETE_ADDER3(DRAGRACE_MOTOR2_SND, DRAGRACE_MOTOR2_EN, NODE_45, NODE_48, NODE_51) DISCRETE_ADDER3(DRAGRACE_MOTOR2_SND, DRAGRACE_MOTOR2_EN, NODE_45, NODE_48, NODE_51)
@ -144,11 +144,13 @@ DISCRETE_SOUND_START(dragrace)
DISCRETE_RAMP(NODE_61, DRAGRACE_EXPLODE1_EN, DRAGRACE_EXPLODE1_EN, (1000.0-0.0)/1, 1000.0, 0.0, 1000.0) DISCRETE_RAMP(NODE_61, DRAGRACE_EXPLODE1_EN, DRAGRACE_EXPLODE1_EN, (1000.0-0.0)/1, 1000.0, 0.0, 1000.0)
DISCRETE_MULTIPLY(NODE_62, DRAGRACE_NOISE, NODE_61) DISCRETE_MULTIPLY(NODE_62, DRAGRACE_NOISE, NODE_61)
DISCRETE_RCFILTER(DRAGRACE_EXPLODE1_SND, DRAGRACE_KLEXPL1_EN, NODE_62, 1500, 2.2e-7) DISCRETE_RCFILTER(NODE_63, NODE_62, 1500, 2.2e-7)
DISCRETE_MULTIPLY(DRAGRACE_EXPLODE1_SND, NODE_63, DRAGRACE_KLEXPL1_EN)
DISCRETE_RAMP(NODE_66, DRAGRACE_EXPLODE2_EN, DRAGRACE_EXPLODE2_EN, (1000.0-0.0)/1, 1000.0, 0.0, 1000.0) DISCRETE_RAMP(NODE_66, DRAGRACE_EXPLODE2_EN, DRAGRACE_EXPLODE2_EN, (1000.0-0.0)/1, 1000.0, 0.0, 1000.0)
DISCRETE_MULTIPLY(NODE_67, DRAGRACE_NOISE, NODE_66) DISCRETE_MULTIPLY(NODE_67, DRAGRACE_NOISE, NODE_66)
DISCRETE_RCFILTER(DRAGRACE_EXPLODE2_SND, DRAGRACE_KLEXPL2_EN, NODE_67, 1500, 2.2e-7) DISCRETE_RCFILTER(NODE_68, NODE_67, 1500, 2.2e-7)
DISCRETE_MULTIPLY(DRAGRACE_EXPLODE2_SND, NODE_68, DRAGRACE_KLEXPL2_EN)
/************************************************/ /************************************************/
/* Skid circuits takes the noise output from */ /* Skid circuits takes the noise output from */
@ -165,7 +167,7 @@ DISCRETE_SOUND_START(dragrace)
/************************************************/ /************************************************/
DISCRETE_INVERT(NODE_70, DRAGRACE_NOISE) DISCRETE_INVERT(NODE_70, DRAGRACE_NOISE)
DISCRETE_MULTADD(NODE_71, NODE_70, 940.0-630.0, ((940.0-630.0)/2)+630.0) DISCRETE_MULTADD(NODE_71, NODE_70, 940.0-630.0, ((940.0-630.0)/2)+630.0)
DISCRETE_RCFILTER(NODE_72, 1, NODE_71, 1000, 1e-5) DISCRETE_RCFILTER(NODE_72, NODE_71, 1000, 1e-5)
DISCRETE_SQUAREWAVE(NODE_73, 1, NODE_72, 407.8, 31.5, 0, 0.0) DISCRETE_SQUAREWAVE(NODE_73, 1, NODE_72, 407.8, 31.5, 0, 0.0)
DISCRETE_ONOFF(DRAGRACE_SCREECH1_SND, DRAGRACE_SCREECH1_EN, NODE_73) DISCRETE_ONOFF(DRAGRACE_SCREECH1_SND, DRAGRACE_SCREECH1_EN, NODE_73)
DISCRETE_ONOFF(DRAGRACE_SCREECH2_SND, DRAGRACE_SCREECH2_EN, NODE_73) DISCRETE_ONOFF(DRAGRACE_SCREECH2_SND, DRAGRACE_SCREECH2_EN, NODE_73)

View File

@ -344,7 +344,7 @@ static DISCRETE_SOUND_START(galaxian)
DISCRETE_LOGIC_INVERT(NODE_170, GAL_INP_FIRE) DISCRETE_LOGIC_INVERT(NODE_170, GAL_INP_FIRE)
DISCRETE_MULTIPLY(NODE_171, TTL_OUT, GAL_INP_FIRE) DISCRETE_MULTIPLY(NODE_171, TTL_OUT, GAL_INP_FIRE)
DISCRETE_MULTIPLY(NODE_172, TTL_OUT, NODE_170) // inverted DISCRETE_MULTIPLY(NODE_172, TTL_OUT, NODE_170) // inverted
DISCRETE_RCFILTER(NODE_173, 1, NODE_172, GAL_R47, GAL_C28) DISCRETE_RCFILTER(NODE_173, NODE_172, GAL_R47, GAL_C28)
/* Mix noise and 163 */ /* Mix noise and 163 */
DISCRETE_TRANSFORM5(NODE_177, NODE_152, TTL_OUT, 1.0/GAL_R46, NODE_173, 1.0/GAL_R48, DISCRETE_TRANSFORM5(NODE_177, NODE_152, TTL_OUT, 1.0/GAL_R46, NODE_173, 1.0/GAL_R48,
"01*2*34*+" ) "01*2*34*+" )

View File

@ -73,7 +73,7 @@ DISCRETE_SOUND_START(hitme)
DISCRETE_555_ASTABLE(NODE_24,1,22e3,39e3,NODE_23,&desc_hitme_555) DISCRETE_555_ASTABLE(NODE_24,1,22e3,39e3,NODE_23,&desc_hitme_555)
/* The output of the 555 timer is fed through a simple CR filter in the amp stage. */ /* The output of the 555 timer is fed through a simple CR filter in the amp stage. */
DISCRETE_CRFILTER(HITME_FINAL_SND,1,NODE_24,1e3,50e-6) DISCRETE_CRFILTER(HITME_FINAL_SND,NODE_24,1e3,50e-6)
/* We scale the final output of 3.8 to 16-bit range and output it at full volume */ /* We scale the final output of 3.8 to 16-bit range and output it at full volume */
DISCRETE_OUTPUT(HITME_FINAL_SND,32000.0/3.8) DISCRETE_OUTPUT(HITME_FINAL_SND,32000.0/3.8)

View File

@ -327,12 +327,12 @@ static DISCRETE_SOUND_START( m52_sound_c )
/* Sallen - Key Filter */ /* Sallen - Key Filter */
/* TODO: R12, C30: This looks like a band pass */ /* TODO: R12, C30: This looks like a band pass */
DISCRETE_RCFILTER(NODE_25, 1, NODE_20, M52_R12, M52_C30) DISCRETE_RCFILTER(NODE_25, NODE_20, M52_R12, M52_C30)
DISCRETE_SALLEN_KEY_FILTER(NODE_30, 1, NODE_25, DISC_SALLEN_KEY_LOW_PASS, &m52_sound_c_sallen_key) DISCRETE_SALLEN_KEY_FILTER(NODE_30, 1, NODE_25, DISC_SALLEN_KEY_LOW_PASS, &m52_sound_c_sallen_key)
/* Mix signals */ /* Mix signals */
DISCRETE_MIXER2(NODE_40, 1, NODE_10, NODE_25, &m52_sound_c_mix1) DISCRETE_MIXER2(NODE_40, 1, NODE_10, NODE_25, &m52_sound_c_mix1)
DISCRETE_CRFILTER(NODE_45, 1, NODE_40, M52_R10+M52_R9, M52_C28) DISCRETE_CRFILTER(NODE_45, NODE_40, M52_R10+M52_R9, M52_C28)
DISCRETE_OUTPUT(NODE_40, 18.0) DISCRETE_OUTPUT(NODE_40, 18.0)

View File

@ -59,7 +59,7 @@ DISCRETE_SOUND_START(llander)
DISCRETE_INPUT_PULSE(LLANDER_NOISE_RESET, 1) DISCRETE_INPUT_PULSE(LLANDER_NOISE_RESET, 1)
DISCRETE_LFSR_NOISE(NODE_20, 1, LLANDER_NOISE_RESET, 12000, 1, 0, 0, &llander_lfsr) // 12KHz Noise source for thrust DISCRETE_LFSR_NOISE(NODE_20, 1, LLANDER_NOISE_RESET, 12000, 1, 0, 0, &llander_lfsr) // 12KHz Noise source for thrust
DISCRETE_RCFILTER(LLANDER_NOISE, 1, NODE_20, 2247, 1e-6) DISCRETE_RCFILTER(LLANDER_NOISE, NODE_20, 2247, 1e-6)
DISCRETE_SQUAREWFIX(LLANDER_TONE_3K_SND, LLANDER_TONE3K_EN, 3000, 9.2, 50, 0, 0) // 3KHz DISCRETE_SQUAREWFIX(LLANDER_TONE_3K_SND, LLANDER_TONE3K_EN, 3000, 9.2, 50, 0, 0) // 3KHz

View File

@ -233,9 +233,9 @@ DISCRETE_SOUND_START( m79amb )
12, 0, 12, /* VPOS,VNEG,VCHARGE */ 12, 0, 12, /* VPOS,VNEG,VCHARGE */
DISC_566_OUT_DC | DISC_566_OUT_TRIANGLE) DISC_566_OUT_DC | DISC_566_OUT_TRIANGLE)
DISCRETE_CRFILTER(NODE_53, DISCRETE_CRFILTER(NODE_53,
M79AMB_MC_CONTROL_EN, /* Q13 */
NODE_52, M79AMB_R41 + M79AMB_R42 + M79AMB_R43, M79AMB_C22) NODE_52, M79AMB_R41 + M79AMB_R42 + M79AMB_R43, M79AMB_C22)
DISCRETE_GAIN(M79AMB_MC_SND, NODE_53, RES_VOLTAGE_DIVIDER(M79AMB_R41 + M79AMB_R42, 2200))//M79AMB_R43)) DISCRETE_MULTIPLY(NODE_54, NODE_53, M79AMB_MC_CONTROL_EN)
DISCRETE_GAIN(M79AMB_MC_SND, NODE_54, RES_VOLTAGE_DIVIDER(M79AMB_R41 + M79AMB_R42, 2200))//M79AMB_R43))
/************************************************ /************************************************
* Tank, Truck, Jeep * Tank, Truck, Jeep
@ -249,11 +249,9 @@ DISCRETE_SOUND_START( m79amb )
M79AMB_TANK_TRUCK_JEEP_EN, /* Q16, Q17 */ M79AMB_TANK_TRUCK_JEEP_EN, /* Q16, Q17 */
NODE_60) NODE_60)
DISCRETE_CRFILTER(NODE_62, DISCRETE_CRFILTER(NODE_62,
1, /* ENAB */
NODE_61, M79AMB_R48 + M79AMB_R49, M79AMB_C26) NODE_61, M79AMB_R48 + M79AMB_R49, M79AMB_C26)
DISCRETE_GAIN(NODE_63, NODE_62, RES_VOLTAGE_DIVIDER(M79AMB_R48, M79AMB_R49)) DISCRETE_GAIN(NODE_63, NODE_62, RES_VOLTAGE_DIVIDER(M79AMB_R48, M79AMB_R49))
DISCRETE_RCFILTER(M79AMB_TANK_TRUCK_JEEP_SND, DISCRETE_RCFILTER(M79AMB_TANK_TRUCK_JEEP_SND,
1, /* ENAB */
NODE_63, RES_2_PARALLEL(M79AMB_R48, M79AMB_R49), M79AMB_C27) NODE_63, RES_2_PARALLEL(M79AMB_R48, M79AMB_R49), M79AMB_C27)
/************************************************ /************************************************
@ -273,9 +271,9 @@ DISCRETE_SOUND_START( m79amb )
12, 0, 12, /* VPOS,VNEG,VCHARGE */ 12, 0, 12, /* VPOS,VNEG,VCHARGE */
DISC_566_OUT_DC | DISC_566_OUT_TRIANGLE) DISC_566_OUT_DC | DISC_566_OUT_TRIANGLE)
DISCRETE_CRFILTER(NODE_73, DISCRETE_CRFILTER(NODE_73,
M79AMB_WHISTLE_A_EN, /* Q16, Q17 */
NODE_72, M79AMB_R57 + M79AMB_R58 + M79AMB_R59, M79AMB_C31) NODE_72, M79AMB_R57 + M79AMB_R58 + M79AMB_R59, M79AMB_C31)
DISCRETE_GAIN(M79AMB_WHISTLE_A_SND, NODE_73, RES_VOLTAGE_DIVIDER(M79AMB_R57 + M79AMB_R58, M79AMB_R59)) DISCRETE_MULTIPLY(NODE_74, NODE_73, M79AMB_WHISTLE_A_EN) /* Q16, Q17 */
DISCRETE_GAIN(M79AMB_WHISTLE_A_SND, NODE_74, RES_VOLTAGE_DIVIDER(M79AMB_R57 + M79AMB_R58, M79AMB_R59))
/************************************************ /************************************************
* Whisle B * Whisle B
@ -294,9 +292,9 @@ DISCRETE_SOUND_START( m79amb )
12, 0, 12, /* VPOS,VNEG,VCHARGE */ 12, 0, 12, /* VPOS,VNEG,VCHARGE */
DISC_566_OUT_DC | DISC_566_OUT_TRIANGLE) DISC_566_OUT_DC | DISC_566_OUT_TRIANGLE)
DISCRETE_CRFILTER(NODE_83, DISCRETE_CRFILTER(NODE_83,
M79AMB_WHISTLE_B_EN, /* Q19, Q20*/
NODE_82, M79AMB_R67 + M79AMB_R68 + M79AMB_R69, M79AMB_C35) NODE_82, M79AMB_R67 + M79AMB_R68 + M79AMB_R69, M79AMB_C35)
DISCRETE_GAIN(M79AMB_WHISTLE_B_SND, NODE_83, RES_VOLTAGE_DIVIDER(M79AMB_R67 + M79AMB_R68, M79AMB_R69)) DISCRETE_MULTIPLY(NODE_84, NODE_83, M79AMB_WHISTLE_B_EN) /* Q19, Q20*/
DISCRETE_GAIN(M79AMB_WHISTLE_B_SND, NODE_84, RES_VOLTAGE_DIVIDER(M79AMB_R67 + M79AMB_R68, M79AMB_R69))
/************************************************ /************************************************
* Mixer * Mixer
@ -312,7 +310,6 @@ DISCRETE_SOUND_START( m79amb )
M79AMB_WHISTLE_B_SND, M79AMB_WHISTLE_B_SND,
&m79amb_final_mix) &m79amb_final_mix)
DISCRETE_RCFILTER(NODE_91, DISCRETE_RCFILTER(NODE_91,
1, /* ENAB */
NODE_90, M79AMB_R86, M79AMB_C41) NODE_90, M79AMB_R86, M79AMB_C41)
DISCRETE_OUTPUT(NODE_91, 32000.0/5) DISCRETE_OUTPUT(NODE_91, 32000.0/5)

View File

@ -222,13 +222,13 @@ DISCRETE_SOUND_START( madalien )
15, 1, 0, DISC_CLK_BY_COUNT) // 4-bit binary up counter 15, 1, 0, DISC_CLK_BY_COUNT) // 4-bit binary up counter
DISCRETE_DAC_R1(NODE_55, NODE_54, DEFAULT_TTL_V_LOGIC_1, &madalien_effect1a_dac) DISCRETE_DAC_R1(NODE_55, NODE_54, DEFAULT_TTL_V_LOGIC_1, &madalien_effect1a_dac)
DISCRETE_DAC_R1(NODE_56, NODE_54, DEFAULT_TTL_V_LOGIC_1, &madalien_effect1b_dac) DISCRETE_DAC_R1(NODE_56, NODE_54, DEFAULT_TTL_V_LOGIC_1, &madalien_effect1b_dac)
DISCRETE_RCFILTER(NODE_57, 1, NODE_56, RES_K(22)/2 + RES_K(22), CAP_U(.033)) DISCRETE_RCFILTER(NODE_57, NODE_56, RES_K(22)/2 + RES_K(22), CAP_U(.033))
DISCRETE_COMP_ADDER(NODE_59, MADALIEN_8910_PORTB_23, &madalien_effect_1b_vol_r) DISCRETE_COMP_ADDER(NODE_59, MADALIEN_8910_PORTB_23, &madalien_effect_1b_vol_r)
/************************************************ /************************************************
* Enemy motor * Enemy motor
************************************************/ ************************************************/
DISCRETE_CRFILTER(NODE_60, 1, MADALIEN_8910_PORTB_7, RES_K(100), CAP_U(4.7)) DISCRETE_CRFILTER(NODE_60, MADALIEN_8910_PORTB_7, RES_K(100), CAP_U(4.7))
// 2 diodes clamp it positive. // 2 diodes clamp it positive.
DISCRETE_CLAMP(NODE_62, NODE_60, 0, 12) DISCRETE_CLAMP(NODE_62, NODE_60, 0, 12)
// the 0.047uF cap to ground just removes real world spikes. // the 0.047uF cap to ground just removes real world spikes.

View File

@ -1,7 +1,6 @@
#include "driver.h" #include "driver.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "cpu/mcs48/mcs48.h" #include "cpu/mcs48/mcs48.h"
#include "sound/dac.h"
#include "sound/ay8910.h" #include "sound/ay8910.h"
#include "sound/discrete.h" #include "sound/discrete.h"
@ -203,16 +202,16 @@ static DISCRETE_STEP( mario_custom_run )
double sample_t = node->info->sample_time; double sample_t = node->info->sample_time;
double vn, exponent, t = 0; double vn, exponent, t = 0;
int update_exponent = 0; int update_exponent;
double t1, t2; double t1, t2;
if (MARIO_CUSTOM_IN1 > 0.001) if (EXPECTED(MARIO_CUSTOM_IN1 > 0.001))
t1 = 0.5 / LS624_F(MARIO_CUSTOM_IN1, 1); t1 = 0.5 / LS624_F(MARIO_CUSTOM_IN1, 1);
else else
/* close enough to 0, so we can speed things up by no longer call pow() */ /* close enough to 0, so we can speed things up by no longer call pow() */
t1 = context->dt_in1_at_0; t1 = context->dt_in1_at_0;
if (MARIO_CUSTOM_IN2 > 0.001) if (EXPECTED(MARIO_CUSTOM_IN2 > 0.001))
t2 = 0.5 / LS624_F(MARIO_CUSTOM_IN2, 2); t2 = 0.5 / LS624_F(MARIO_CUSTOM_IN2, 2);
else else
t2 = context->dt_in2_at_0; t2 = context->dt_in2_at_0;
@ -222,9 +221,10 @@ static DISCRETE_STEP( mario_custom_run )
/* state before time advance */ /* state before time advance */
vn = (double) (context->state1 ^ context->state2); vn = (double) (context->state1 ^ context->state2);
vn *= MARIO_CUSTOM_VOUT; vn *= MARIO_CUSTOM_VOUT;
update_exponent = 0;
if (context->remain1 < context->remain2) if (context->remain1 < context->remain2)
{ {
if (context->remain1 < sample_t) if (EXPECTED(context->remain1 < sample_t))
{ {
t = context->remain1; t = context->remain1;
update_exponent = 1; update_exponent = 1;
@ -242,7 +242,7 @@ static DISCRETE_STEP( mario_custom_run )
} }
else else
{ {
if (context->remain2 < sample_t) if (EXPECTED(context->remain2 < sample_t))
{ {
t = context->remain2; t = context->remain2;
update_exponent = 1; update_exponent = 1;
@ -259,7 +259,7 @@ static DISCRETE_STEP( mario_custom_run )
} }
} }
if (update_exponent) if (EXPECTED(update_exponent))
exponent = RC_CHARGE_EXP_DT(context->r1_c3, t); exponent = RC_CHARGE_EXP_DT(context->r1_c3, t);
else else
exponent = context->exponent_c3; exponent = context->exponent_c3;
@ -313,7 +313,7 @@ static DISCRETE_SOUND_START(mario)
DISCRETE_TASK_START(1) DISCRETE_TASK_START(1)
DISCRETE_INPUT_PULSE(DS_SOUND0_INV, 1) DISCRETE_INPUT_PULSE(DS_SOUND0_INV, 1)
DISCRETE_LS123(NODE_10, DS_SOUND0_INV, MR_R17, MR_C14) DISCRETE_LS123(NODE_10, DS_SOUND0_INV, MR_R17, MR_C14)
DISCRETE_RCFILTER(NODE_11, 1, NODE_10, MR_R6, MR_C3 ) DISCRETE_RCFILTER(NODE_11, NODE_10, MR_R6, MR_C3 )
DISCRETE_CUSTOM7(NODE_12, NODE_10, NODE_11, NODE_11, MR_C6, MR_C17, DISCRETE_CUSTOM7(NODE_12, NODE_10, NODE_11, NODE_11, MR_C6, MR_C17,
MR_MIXER_RPAR, MR_C31, &mario_custom_run_info) MR_MIXER_RPAR, MR_C31, &mario_custom_run_info)
DISCRETE_MULTIPLY(DS_OUT_SOUND0, NODE_12, MR_MIXER_RPAR / MR_R20) DISCRETE_MULTIPLY(DS_OUT_SOUND0, NODE_12, MR_MIXER_RPAR / MR_R20)
@ -326,7 +326,7 @@ static DISCRETE_SOUND_START(mario)
DISCRETE_TASK_START(1) DISCRETE_TASK_START(1)
DISCRETE_INPUT_PULSE(DS_SOUND1_INV, 1) DISCRETE_INPUT_PULSE(DS_SOUND1_INV, 1)
DISCRETE_LS123(NODE_20, DS_SOUND1_INV, MR_R18, MR_C15) DISCRETE_LS123(NODE_20, DS_SOUND1_INV, MR_R18, MR_C15)
DISCRETE_RCFILTER(NODE_21, 1, NODE_20, MR_R7, MR_C4 ) DISCRETE_RCFILTER(NODE_21, NODE_20, MR_R7, MR_C4 )
DISCRETE_CUSTOM7(NODE_22, NODE_20, NODE_21, NODE_21, MR_C5, MR_C16, DISCRETE_CUSTOM7(NODE_22, NODE_20, NODE_21, NODE_21, MR_C5, MR_C16,
MR_MIXER_RPAR, MR_C31, &mario_custom_run_info) MR_MIXER_RPAR, MR_C31, &mario_custom_run_info)
DISCRETE_MULTIPLY(DS_OUT_SOUND1, NODE_22, MR_MIXER_RPAR / MR_R19) DISCRETE_MULTIPLY(DS_OUT_SOUND1, NODE_22, MR_MIXER_RPAR / MR_R19)
@ -344,17 +344,17 @@ static DISCRETE_SOUND_START(mario)
DISCRETE_LS123(NODE_110, DS_SOUND7_INV, MR_R61, MR_C41) DISCRETE_LS123(NODE_110, DS_SOUND7_INV, MR_R61, MR_C41)
DISCRETE_TRANSFORM2(NODE_111, NODE_110, TTL_HIGH, "0!1*") DISCRETE_TRANSFORM2(NODE_111, NODE_110, TTL_HIGH, "0!1*")
DISCRETE_RCFILTER(NODE_112, 1, NODE_111, MR_R65, MR_C44) DISCRETE_RCFILTER(NODE_112, NODE_111, MR_R65, MR_C44)
DISCRETE_74LS624(NODE_113, NODE_112, RUN_VCO_VOLTAGE /*VSS*/, MR_C40, DISC_LS624_OUT_LOGIC) DISCRETE_74LS624(NODE_113, NODE_112, RUN_VCO_VOLTAGE /*VSS*/, MR_C40, DISC_LS624_OUT_LOGIC)
DISCRETE_LOGIC_XOR(NODE_115, NODE_102, NODE_113) DISCRETE_LOGIC_XOR(NODE_115, NODE_102, NODE_113)
DISCRETE_RCFILTER(NODE_117, 1, NODE_104, MR_R64, MR_C43) DISCRETE_RCFILTER(NODE_117, NODE_104, MR_R64, MR_C43)
DISCRETE_74LS624(NODE_118, NODE_117, RUN_VCO_VOLTAGE /*VSS*/, MR_C39, DISC_LS624_OUT_COUNT_F) DISCRETE_74LS624(NODE_118, NODE_117, RUN_VCO_VOLTAGE /*VSS*/, MR_C39, DISC_LS624_OUT_COUNT_F)
DISCRETE_LOGIC_AND(NODE_120, NODE_115, NODE_110) DISCRETE_LOGIC_AND(NODE_120, NODE_115, NODE_110)
DISCRETE_MULTIPLY(NODE_121, NODE_120, TTL_HIGH * MR_MIXER_RPAR / MR_R41) DISCRETE_MULTIPLY(NODE_121, NODE_120, TTL_HIGH * MR_MIXER_RPAR / MR_R41)
DISCRETE_RCFILTER(DS_OUT_SOUND7, 1, NODE_121, MR_MIXER_RPAR, MR_C31) DISCRETE_RCFILTER(DS_OUT_SOUND7, NODE_121, MR_MIXER_RPAR, MR_C31)
DISCRETE_TASK_END() DISCRETE_TASK_END()
/************************************************/ /************************************************/
@ -368,10 +368,10 @@ static DISCRETE_SOUND_START(mario)
DISCRETE_TASK_START(1) DISCRETE_TASK_START(1)
DISCRETE_INPUT_BUFFER(DS_DAC, 0) DISCRETE_INPUT_BUFFER(DS_DAC, 0)
DISCRETE_MULTIPLY(NODE_170, DS_DAC, TTL_HIGH/256.0) DISCRETE_MULTIPLY(NODE_170, DS_DAC, TTL_HIGH/256.0)
DISCRETE_RCFILTER(NODE_171, 1, NODE_170, RES_K(750), CAP_P(200)) DISCRETE_RCFILTER(NODE_171, NODE_170, RES_K(750), CAP_P(200))
DISCRETE_MULTIPLY(NODE_172, NODE_171, MR_MIXER_RPAR / MR_R40) DISCRETE_MULTIPLY(NODE_172, NODE_171, MR_MIXER_RPAR / MR_R40)
DISCRETE_RCFILTER(DS_OUT_DAC, 1, NODE_172, MR_MIXER_RPAR, MR_C31) DISCRETE_RCFILTER(DS_OUT_DAC, NODE_172, MR_MIXER_RPAR, MR_C31)
DISCRETE_TASK_END() DISCRETE_TASK_END()
@ -385,9 +385,9 @@ static DISCRETE_SOUND_START(mario)
/* Amplifier: internal amplifier /* Amplifier: internal amplifier
* Just a 1:n amplifier without filters and no output capacitor * Just a 1:n amplifier without filters and no output capacitor
*/ */
DISCRETE_CRFILTER(NODE_296, 1, NODE_295, RES_2_PARALLEL(MR_R42, MR_R43), MR_C32) DISCRETE_CRFILTER(NODE_296, NODE_295, RES_2_PARALLEL(MR_R42, MR_R43), MR_C32)
/* EZV20 (Monitor) ouput capacitor / Speaker */ /* EZV20 (Monitor) ouput capacitor / Speaker */
DISCRETE_CRFILTER(NODE_297, 1, NODE_296, 6, CAP_U(22)) DISCRETE_CRFILTER(NODE_297, NODE_296, 6, CAP_U(22))
DISCRETE_OUTPUT(NODE_297, 32767.0/5.0 * 10) DISCRETE_OUTPUT(NODE_297, 32767.0/5.0 * 10)
//DISCRETE_WAVELOG1(DS_OUT_SOUND0, 32767/5.0) //DISCRETE_WAVELOG1(DS_OUT_SOUND0, 32767/5.0)
//DISCRETE_WAVELOG2(NODE_296, 32767/5.0 * 2, DS_SOUND7_INV, 10000) //DISCRETE_WAVELOG2(NODE_296, 32767/5.0 * 2, DS_SOUND7_INV, 10000)

View File

@ -327,7 +327,7 @@ static DISCRETE_SOUND_START(tornbase)
/* 47K resistor (R601) and 0.047uF capacitor (C601) /* 47K resistor (R601) and 0.047uF capacitor (C601)
There is also a 50K pot acting as a volume control, but we output at There is also a 50K pot acting as a volume control, but we output at
the maximum volume as MAME has its own volume adjustment */ the maximum volume as MAME has its own volume adjustment */
DISCRETE_CRFILTER(TORNBASE_TONE_SND_FILT, 1, TORNBASE_TONE_SND, RES_K(47), CAP_U(0.047)) DISCRETE_CRFILTER(TORNBASE_TONE_SND_FILT, TORNBASE_TONE_SND, RES_K(47), CAP_U(0.047))
/* amplify for output */ /* amplify for output */
DISCRETE_OUTPUT(TORNBASE_TONE_SND_FILT, 32767) DISCRETE_OUTPUT(TORNBASE_TONE_SND_FILT, 32767)
@ -554,7 +554,6 @@ static DISCRETE_SOUND_START(maze)
/* The following circuits remove DC poping noises when the tone is switched in/out. */ /* The following circuits remove DC poping noises when the tone is switched in/out. */
DISCRETE_CRFILTER_VREF(NODE_40, DISCRETE_CRFILTER_VREF(NODE_40,
1, /* ENAB */
NODE_36, /* IN0 */ NODE_36, /* IN0 */
RES_K(250), /* R311, R312, R402, R403 in parallel */ RES_K(250), /* R311, R312, R402, R403 in parallel */
CAP_U(0.1), /* c301 */ CAP_U(0.1), /* c301 */
@ -565,12 +564,10 @@ static DISCRETE_SOUND_START(maze)
2.5, /* INP0 - center voltage of R402, R403 */ 2.5, /* INP0 - center voltage of R402, R403 */
NODE_40) /* INP1 */ NODE_40) /* INP1 */
DISCRETE_CRFILTER(NODE_42, DISCRETE_CRFILTER(NODE_42,
1, /* ENAB */
NODE_41, /* IN0 */ NODE_41, /* IN0 */
RES_K(56 + 390), /* R404 + R405 */ RES_K(56 + 390), /* R404 + R405 */
CAP_P(0.01) ) /* C401 */ CAP_P(0.01) ) /* C401 */
DISCRETE_RCFILTER(NODE_43, DISCRETE_RCFILTER(NODE_43,
1, /* ENAB */
NODE_42, /* IN0 */ NODE_42, /* IN0 */
RES_K(56), /* R404 */ RES_K(56), /* R404 */
CAP_P(4700) ) /* C400 */ CAP_P(4700) ) /* C400 */
@ -788,23 +785,23 @@ static DISCRETE_SOUND_START(boothill)
DISCRETE_LFSR_NOISE(BOOTHILL_NOISE, 1, 1, 7700, 12.0, 0, 12.0/2, &midway_lfsr) DISCRETE_LFSR_NOISE(BOOTHILL_NOISE, 1, 1, 7700, 12.0, 0, 12.0/2, &midway_lfsr)
DISCRETE_OP_AMP_TRIG_VCA(NODE_30, BOOTHILL_LEFT_SHOT_EN, 0, 0, BOOTHILL_NOISE, 0, &boothill_shot_tvca_info) DISCRETE_OP_AMP_TRIG_VCA(NODE_30, BOOTHILL_LEFT_SHOT_EN, 0, 0, BOOTHILL_NOISE, 0, &boothill_shot_tvca_info)
DISCRETE_RCFILTER(NODE_31, 1, NODE_30, RES_K(12), CAP_U(.01)) DISCRETE_RCFILTER(NODE_31, NODE_30, RES_K(12), CAP_U(.01))
DISCRETE_RCFILTER(BOOTHILL_L_SHOT_SND, 1, NODE_31, RES_K(12) + RES_K(68), CAP_U(.0022)) DISCRETE_RCFILTER(BOOTHILL_L_SHOT_SND, NODE_31, RES_K(12) + RES_K(68), CAP_U(.0022))
DISCRETE_OP_AMP_TRIG_VCA(NODE_35, BOOTHILL_RIGHT_SHOT_EN, 0, 0, BOOTHILL_NOISE, 0, &boothill_shot_tvca_info) DISCRETE_OP_AMP_TRIG_VCA(NODE_35, BOOTHILL_RIGHT_SHOT_EN, 0, 0, BOOTHILL_NOISE, 0, &boothill_shot_tvca_info)
DISCRETE_RCFILTER(NODE_36, 1, NODE_35, RES_K(12), CAP_U(.01)) DISCRETE_RCFILTER(NODE_36, NODE_35, RES_K(12), CAP_U(.01))
DISCRETE_RCFILTER(BOOTHILL_R_SHOT_SND, 1, NODE_36, RES_K(12) + RES_K(68), CAP_U(.0033)) DISCRETE_RCFILTER(BOOTHILL_R_SHOT_SND, NODE_36, RES_K(12) + RES_K(68), CAP_U(.0033))
/************************************************ /************************************************
* Hit sounds * Hit sounds
************************************************/ ************************************************/
DISCRETE_OP_AMP_TRIG_VCA(NODE_40, BOOTHILL_LEFT_HIT_EN, 0, 0, BOOTHILL_NOISE, 0, &boothill_hit_tvca_info) DISCRETE_OP_AMP_TRIG_VCA(NODE_40, BOOTHILL_LEFT_HIT_EN, 0, 0, BOOTHILL_NOISE, 0, &boothill_hit_tvca_info)
DISCRETE_RCFILTER(NODE_41, 1, NODE_40, RES_K(12), CAP_U(.033)) DISCRETE_RCFILTER(NODE_41, NODE_40, RES_K(12), CAP_U(.033))
DISCRETE_RCFILTER(BOOTHILL_L_HIT_SND, 1, NODE_41, RES_K(12) + RES_K(100), CAP_U(.0033)) DISCRETE_RCFILTER(BOOTHILL_L_HIT_SND, NODE_41, RES_K(12) + RES_K(100), CAP_U(.0033))
DISCRETE_OP_AMP_TRIG_VCA(NODE_45, BOOTHILL_RIGHT_HIT_EN, 0, 0, BOOTHILL_NOISE, 0, &boothill_hit_tvca_info) DISCRETE_OP_AMP_TRIG_VCA(NODE_45, BOOTHILL_RIGHT_HIT_EN, 0, 0, BOOTHILL_NOISE, 0, &boothill_hit_tvca_info)
DISCRETE_RCFILTER(NODE_46, 1, NODE_45, RES_K(12), CAP_U(.0033)) DISCRETE_RCFILTER(NODE_46, NODE_45, RES_K(12), CAP_U(.0033))
DISCRETE_RCFILTER(BOOTHILL_R_HIT_SND, 1, NODE_46, RES_K(12) + RES_K(100), CAP_U(.0022)) DISCRETE_RCFILTER(BOOTHILL_R_HIT_SND, NODE_46, RES_K(12) + RES_K(100), CAP_U(.0022))
/************************************************ /************************************************
* Combine all sound sources. * Combine all sound sources.
@ -1030,7 +1027,6 @@ static DISCRETE_SOUND_START(checkmat)
/* The following circuits remove DC poping noises when the tone is switched in/out. */ /* The following circuits remove DC poping noises when the tone is switched in/out. */
DISCRETE_CRFILTER_VREF(NODE_31, DISCRETE_CRFILTER_VREF(NODE_31,
1, /* ENAB */
NODE_30, /* IN0 */ NODE_30, /* IN0 */
RES_K(250), /* R409, R415, R414, R413 in parallel */ RES_K(250), /* R409, R415, R414, R413 in parallel */
CAP_U(0.1), /* c401 */ CAP_U(0.1), /* c401 */
@ -1041,12 +1037,10 @@ static DISCRETE_SOUND_START(checkmat)
2.5, /* INP0 - center voltage of R413, R414 */ 2.5, /* INP0 - center voltage of R413, R414 */
NODE_31) /* INP1 */ NODE_31) /* INP1 */
DISCRETE_CRFILTER(NODE_33, DISCRETE_CRFILTER(NODE_33,
1, /* ENAB */
NODE_32, /* IN0 */ NODE_32, /* IN0 */
RES_K(56 + 47 + 200), /* R412 + R408 + part of R411 */ RES_K(56 + 47 + 200), /* R412 + R408 + part of R411 */
CAP_P(0.01) ) /* C404 */ CAP_P(0.01) ) /* C404 */
DISCRETE_RCFILTER(CHECKMAT_TONE_SND, DISCRETE_RCFILTER(CHECKMAT_TONE_SND,
1, /* ENAB */
NODE_33, /* IN0 */ NODE_33, /* IN0 */
RES_K(56), /* R412 */ RES_K(56), /* R412 */
CAP_P(4700) ) /* C403 */ CAP_P(4700) ) /* C403 */
@ -1236,8 +1230,8 @@ static DISCRETE_SOUND_START(desertgu)
DISCRETE_LFSR_NOISE(DESERTGU_NOISE, 1, 1, 7515, 12.0, 0, 12.0/2, &midway_lfsr) DISCRETE_LFSR_NOISE(DESERTGU_NOISE, 1, 1, 7515, 12.0, 0, 12.0/2, &midway_lfsr)
DISCRETE_OP_AMP_TRIG_VCA(NODE_30, DESERTGU_RIFLE_SHOT_EN, 0, 0, DESERTGU_NOISE, 0, &desertgu_rifle_shot_tvca_info) DISCRETE_OP_AMP_TRIG_VCA(NODE_30, DESERTGU_RIFLE_SHOT_EN, 0, 0, DESERTGU_NOISE, 0, &desertgu_rifle_shot_tvca_info)
DISCRETE_RCFILTER(NODE_31, 1, NODE_30, RES_K(12), CAP_U(.01)) DISCRETE_RCFILTER(NODE_31, NODE_30, RES_K(12), CAP_U(.01))
DISCRETE_CRFILTER(DESERTGU_RIFLE_SHOT_SND, 1, NODE_31, RES_K(12) + RES_K(68), CAP_U(.0022)) DISCRETE_CRFILTER(DESERTGU_RIFLE_SHOT_SND, NODE_31, RES_K(12) + RES_K(68), CAP_U(.0022))
/************************************************ /************************************************
* Bottle hit sound * Bottle hit sound
@ -1909,8 +1903,8 @@ static DISCRETE_SOUND_START(clowns)
DISCRETE_LFSR_NOISE(CLOWNS_NOISE, 1, 1, 7700, 12.0, 0, 12.0/2, &midway_lfsr) DISCRETE_LFSR_NOISE(CLOWNS_NOISE, 1, 1, 7700, 12.0, 0, 12.0/2, &midway_lfsr)
DISCRETE_OP_AMP_TRIG_VCA(NODE_30, CLOWNS_POP_TOP_EN, CLOWNS_POP_MIDDLE_EN, CLOWNS_POP_BOTTOM_EN, CLOWNS_NOISE, 0, &clowns_pop_tvca_info) DISCRETE_OP_AMP_TRIG_VCA(NODE_30, CLOWNS_POP_TOP_EN, CLOWNS_POP_MIDDLE_EN, CLOWNS_POP_BOTTOM_EN, CLOWNS_NOISE, 0, &clowns_pop_tvca_info)
DISCRETE_RCFILTER(NODE_31, 1, NODE_30, RES_K(15), CAP_U(.01)) DISCRETE_RCFILTER(NODE_31, NODE_30, RES_K(15), CAP_U(.01))
DISCRETE_CRFILTER(NODE_32, 1, NODE_31, RES_K(15) + RES_K(39), CAP_U(.01)) DISCRETE_CRFILTER(NODE_32, NODE_31, RES_K(15) + RES_K(39), CAP_U(.01))
DISCRETE_GAIN(CLOWNS_POP_SND, NODE_32, RES_K(39)/(RES_K(15) + RES_K(39))) DISCRETE_GAIN(CLOWNS_POP_SND, NODE_32, RES_K(39)/(RES_K(15) + RES_K(39)))
/************************************************ /************************************************
@ -2190,11 +2184,9 @@ static const discrete_mixer_desc spacwalk_mixer =
************************************************/ ************************************************/
#define SPACWALK_SPRINGBOARD_HIT_CIRCUIT(_num) \ #define SPACWALK_SPRINGBOARD_HIT_CIRCUIT(_num) \
DISCRETE_RCFILTER(NODE_RELATIVE(NODE_29, _num), \ DISCRETE_RCFILTER(NODE_RELATIVE(NODE_29, _num), \
1, /* ENAB */ \
SPACWALK_NOISE, /* IN0 */ \ SPACWALK_NOISE, /* IN0 */ \
RES_K(330), CAP_U(.1)) \ RES_K(330), CAP_U(.1)) \
DISCRETE_RCFILTER(NODE_RELATIVE(NODE_31, _num), \ DISCRETE_RCFILTER(NODE_RELATIVE(NODE_31, _num), \
1, /* ENAB */ \
NODE_RELATIVE(NODE_29, _num), /* IN0 */ \ NODE_RELATIVE(NODE_29, _num), /* IN0 */ \
RES_K(330) + RES_K(150), CAP_U(.1)) \ RES_K(330) + RES_K(150), CAP_U(.1)) \
DISCRETE_OP_AMP_VCO1(NODE_RELATIVE(NODE_33, _num), /* IC M2-3, pin 5 */ \ DISCRETE_OP_AMP_VCO1(NODE_RELATIVE(NODE_33, _num), /* IC M2-3, pin 5 */ \
@ -2253,11 +2245,9 @@ DISCRETE_GAIN(NODE_RELATIVE(SPACWALK_SPRINGBOARD_HIT1_SND, _num - 1),
SPACWALK_NOISE, 0, /* IN0, IN1 */ SPACWALK_NOISE, 0, /* IN0, IN1 */
&spacwalk_hit_tvca_info) &spacwalk_hit_tvca_info)
DISCRETE_RCFILTER(NODE_21, DISCRETE_RCFILTER(NODE_21,
1, /* ENAB */
NODE_20, /* IN0 */ NODE_20, /* IN0 */
SPACWALK_R307, SPACWALK_C303) SPACWALK_R307, SPACWALK_C303)
DISCRETE_RCFILTER(SPACWALK_TARGET_HIT_SND, DISCRETE_RCFILTER(SPACWALK_TARGET_HIT_SND,
1, /* ENAB */
NODE_21, /* IN0 */ NODE_21, /* IN0 */
SPACWALK_R307 + SPACWALK_R308, SPACWALK_C304) SPACWALK_R307 + SPACWALK_R308, SPACWALK_C304)
@ -2284,7 +2274,6 @@ DISCRETE_GAIN(NODE_RELATIVE(SPACWALK_SPRINGBOARD_HIT1_SND, _num - 1),
NODE_50, /* VMOD1 */ NODE_50, /* VMOD1 */
&spacwalk_sb_miss_vco) &spacwalk_sb_miss_vco)
DISCRETE_CRFILTER(NODE_53, DISCRETE_CRFILTER(NODE_53,
1, /* ENAB */
NODE_52, /* IN0 */ NODE_52, /* IN0 */
SPACWALK_R417, SPACWALK_C453) SPACWALK_R417, SPACWALK_C453)
/* this filter type probably does not work right. I need to test it. */ /* this filter type probably does not work right. I need to test it. */
@ -2308,11 +2297,9 @@ DISCRETE_GAIN(NODE_RELATIVE(SPACWALK_SPRINGBOARD_HIT1_SND, _num - 1),
NODE_60, /* VMOD1*/ NODE_60, /* VMOD1*/
&spacwalk_spaceship_vco) &spacwalk_spaceship_vco)
DISCRETE_RCFILTER(NODE_62, DISCRETE_RCFILTER(NODE_62,
1, /* ENAB */
NODE_61, /* IN0 */ NODE_61, /* IN0 */
RES_K(1), CAP_U(0.15)) RES_K(1), CAP_U(0.15))
DISCRETE_RCFILTER(SPACWALK_SPACE_SHIP_SND, DISCRETE_RCFILTER(SPACWALK_SPACE_SHIP_SND,
1, /* ENAB */
NODE_62, /* IN0 */ NODE_62, /* IN0 */
RES_K(1) + RES_K(10), CAP_U(0.015)) RES_K(1) + RES_K(10), CAP_U(0.015))
@ -2427,7 +2414,7 @@ static DISCRETE_SOUND_START(dogpatch)
/************************************************ /************************************************
* Filter it to be AC. * Filter it to be AC.
************************************************/ ************************************************/
DISCRETE_CRFILTER(NODE_91, 1, MIDWAY_TONE_SND, RES_K(100), CAP_U(0.1)) DISCRETE_CRFILTER(NODE_91, MIDWAY_TONE_SND, RES_K(100), CAP_U(0.1))
DISCRETE_OUTPUT(NODE_91, 5000) DISCRETE_OUTPUT(NODE_91, 5000)
@ -2806,7 +2793,6 @@ static DISCRETE_SOUND_START(spcenctr)
DISC_OP_AMP_FILTER_IS_BAND_PASS_1M | DISC_OP_AMP_IS_NORTON, DISC_OP_AMP_FILTER_IS_BAND_PASS_1M | DISC_OP_AMP_IS_NORTON,
&spcenctr_enemy_ship_shot_filt) &spcenctr_enemy_ship_shot_filt)
DISCRETE_CRFILTER(SPCENCTR_ENEMY_SHIP_SHOT_SND, DISCRETE_CRFILTER(SPCENCTR_ENEMY_SHIP_SHOT_SND,
1, /* ENAB */
NODE_23, /* IN0 */ NODE_23, /* IN0 */
RES_K(1.8), /* R116 */ RES_K(1.8), /* R116 */
CAP_U(0.1) ) /* C104 */ CAP_U(0.1) ) /* C104 */
@ -2833,7 +2819,6 @@ static DISCRETE_SOUND_START(spcenctr)
0, /* MIN */ 0, /* MIN */
12) /* MAX */ 12) /* MAX */
DISCRETE_CRFILTER(NODE_34, DISCRETE_CRFILTER(NODE_34,
1, /* ENAB */
SPCENCTR_NOISE, /* IN0 */ SPCENCTR_NOISE, /* IN0 */
RES_M(1) + RES_K(330), /* R507, R509 */ RES_M(1) + RES_K(330), /* R507, R509 */
CAP_U(0.1) ) /* C503 */ CAP_U(0.1) ) /* C503 */
@ -2911,12 +2896,10 @@ static DISCRETE_SOUND_START(spcenctr)
0, /* no IN1 */ 0, /* no IN1 */
&spcenctr_explosion_tvca) &spcenctr_explosion_tvca)
DISCRETE_RCFILTER(NODE_71, DISCRETE_RCFILTER(NODE_71,
1, /* ENAB */
NODE_70, /* IN0 */ NODE_70, /* IN0 */
RES_K(1.8), /* R405 */ RES_K(1.8), /* R405 */
CAP_U(0.22) ) /* C401 */ CAP_U(0.22) ) /* C401 */
DISCRETE_RCFILTER(SPCENCTR_EXPLOSION_SND, DISCRETE_RCFILTER(SPCENCTR_EXPLOSION_SND,
1, /* ENAB */
NODE_71, /* IN0 */ NODE_71, /* IN0 */
RES_K(1.8) + RES_K(3.6), /* R405 + R406 */ RES_K(1.8) + RES_K(3.6), /* R405 + R406 */
CAP_U(0.22) ) /* C402 */ CAP_U(0.22) ) /* C402 */
@ -3177,7 +3160,6 @@ static DISCRETE_SOUND_START(bowler)
0, /* no IN1 */ 0, /* no IN1 */
&bowler_fowl_tvca) &bowler_fowl_tvca)
DISCRETE_CRFILTER(BOWLER_FOWL_SND, DISCRETE_CRFILTER(BOWLER_FOWL_SND,
1, /* ENAB */
NODE_21, /* IN0 */ NODE_21, /* IN0 */
RES_K(68), /* R1120 */ RES_K(68), /* R1120 */
CAP_U(0.1) ) /* C1048 */ CAP_U(0.1) ) /* C1048 */
@ -3741,12 +3723,10 @@ static const discrete_mixer_desc invaders_mixer =
CAP_U(0.1), /* C29 */ \ CAP_U(0.1), /* C29 */ \
&invaders_thump_555) \ &invaders_thump_555) \
DISCRETE_RCFILTER(INVADERS_NODE(32, _board), \ DISCRETE_RCFILTER(INVADERS_NODE(32, _board), \
1, /* ENAB */ \
INVADERS_NODE(31, _board), /* IN0 */ \ INVADERS_NODE(31, _board), /* IN0 */ \
100, /* R132 */ \ 100, /* R132 */ \
CAP_U(4.7) ) /* C31 */ \ CAP_U(4.7) ) /* C31 */ \
DISCRETE_RCFILTER(INVADERS_NODE(INVADERS_FLEET_SND, _board), \ DISCRETE_RCFILTER(INVADERS_NODE(INVADERS_FLEET_SND, _board), \
1, /* ENAB */ \
INVADERS_NODE(32, _board), /* IN0 */ \ INVADERS_NODE(32, _board), /* IN0 */ \
100 + 100, /* R132 + R133 */ \ 100 + 100, /* R132 + R133 */ \
CAP_U(10) ) /* C32 */ CAP_U(10) ) /* C32 */
@ -3822,12 +3802,10 @@ static const discrete_mixer_desc invaders_mixer =
0, /* no IN1 */ \ 0, /* no IN1 */ \
&invaders_explosion_tvca) \ &invaders_explosion_tvca) \
DISCRETE_RCFILTER(INVADERS_NODE(62, _board), \ DISCRETE_RCFILTER(INVADERS_NODE(62, _board), \
1, /* ENAB */ \
INVADERS_NODE(61, _board), /* IN0 */ \ INVADERS_NODE(61, _board), /* IN0 */ \
RES_K(5.6), /* R84 */ \ RES_K(5.6), /* R84 */ \
CAP_U(0.1) ) /* C27 */ \ CAP_U(0.1) ) /* C27 */ \
DISCRETE_RCFILTER(INVADERS_NODE(INVADERS_EXPLOSION_SND, _board), \ DISCRETE_RCFILTER(INVADERS_NODE(INVADERS_EXPLOSION_SND, _board), \
1, /* ENAB */ \
INVADERS_NODE(62, _board), /* IN0 */ \ INVADERS_NODE(62, _board), /* IN0 */ \
RES_K(5.6) + RES_K(6.8), /* R84 + R85 */ \ RES_K(5.6) + RES_K(6.8), /* R84 + R85 */ \
CAP_U(0.1) ) /* C28 */ CAP_U(0.1) ) /* C28 */
@ -3856,7 +3834,6 @@ static const discrete_mixer_desc invaders_mixer =
0, /* MIN */ \ 0, /* MIN */ \
12) /* MAX */ \ 12) /* MAX */ \
DISCRETE_CRFILTER(INVADERS_NODE(74, _board), \ DISCRETE_CRFILTER(INVADERS_NODE(74, _board), \
1, /* ENAB */ \
INVADERS_NOISE, /* IN0 */ \ INVADERS_NOISE, /* IN0 */ \
RES_M(1) + RES_K(330), /* R29, R11 */ \ RES_M(1) + RES_K(330), /* R29, R11 */ \
CAP_U(0.1) ) /* C57 */ \ CAP_U(0.1) ) /* C57 */ \

View File

@ -79,21 +79,21 @@ DISCRETE_SOUND_START(nitedrvr)
/* This adjusts the high end. */ /* This adjusts the high end. */
/* 0k = 214Hz. 250k = 4416Hz */ /* 0k = 214Hz. 250k = 4416Hz */
/************************************************/ /************************************************/
DISCRETE_RCFILTER(NODE_20, 1, NITEDRVR_MOTOR_DATA, 123037, 2.2e-6) DISCRETE_RCFILTER(NODE_20, NITEDRVR_MOTOR_DATA, 123037, 2.2e-6)
DISCRETE_ADJUSTMENT_TAG(NODE_21, (214.0-27.0)/12/31, (4416.0-27.0)/12/31, DISC_LOGADJ, "MOTOR") DISCRETE_ADJUSTMENT_TAG(NODE_21, (214.0-27.0)/12/31, (4416.0-27.0)/12/31, DISC_LOGADJ, "MOTOR")
DISCRETE_MULTIPLY(NODE_22, NODE_20, NODE_21) DISCRETE_MULTIPLY(NODE_22, NODE_20, NODE_21)
DISCRETE_MULTADD(NODE_23, NODE_22, 2, 27.0/6) /* F1 = /12*2 = /6 */ DISCRETE_MULTADD(NODE_23, NODE_22, 2, 27.0/6) /* F1 = /12*2 = /6 */
DISCRETE_SQUAREWAVE(NODE_24, 1, NODE_23, (786.7/3), 50.0, 0, 0) DISCRETE_SQUAREWAVE(NODE_24, 1, NODE_23, (786.7/3), 50.0, 0, 0)
DISCRETE_RCFILTER(NODE_25, 1, NODE_24, 10000, 1e-7) DISCRETE_RCFILTER(NODE_25, NODE_24, 10000, 1e-7)
DISCRETE_MULTADD(NODE_26, NODE_22, 3, 27.0/4) /* F2 = /12*3 = /4 */ DISCRETE_MULTADD(NODE_26, NODE_22, 3, 27.0/4) /* F2 = /12*3 = /4 */
DISCRETE_SQUAREWAVE(NODE_27, 1, NODE_26, (786.7/3), 50.0, 0, 0) DISCRETE_SQUAREWAVE(NODE_27, 1, NODE_26, (786.7/3), 50.0, 0, 0)
DISCRETE_RCFILTER(NODE_28, 1, NODE_27, 10000, 1e-7) DISCRETE_RCFILTER(NODE_28, NODE_27, 10000, 1e-7)
DISCRETE_MULTADD(NODE_29, NODE_22, 4, 27.0/3) /* F3 = /12*4 = /3 */ DISCRETE_MULTADD(NODE_29, NODE_22, 4, 27.0/3) /* F3 = /12*4 = /3 */
DISCRETE_SQUAREWAVE(NODE_30, 1, NODE_29, (786.7/3), 100.0/3, 0, 360.0/3) DISCRETE_SQUAREWAVE(NODE_30, 1, NODE_29, (786.7/3), 100.0/3, 0, 360.0/3)
DISCRETE_RCFILTER(NODE_31, 1, NODE_30, 10000, 1e-7) DISCRETE_RCFILTER(NODE_31, NODE_30, 10000, 1e-7)
DISCRETE_ADDER3(NITEDRVR_MOTOR_SND, NITEDRVR_ATTRACT_EN, NODE_25, NODE_28, NODE_31) DISCRETE_ADDER3(NITEDRVR_MOTOR_SND, NITEDRVR_ATTRACT_EN, NODE_25, NODE_28, NODE_31)
@ -108,7 +108,7 @@ DISCRETE_SOUND_START(nitedrvr)
DISCRETE_LFSR_NOISE(NITEDRVR_NOISE, NITEDRVR_CRASH_EN, NITEDRVR_CRASH_EN, 15750.0/2/4, 1.0, 0, 0, &nitedrvr_lfsr) DISCRETE_LFSR_NOISE(NITEDRVR_NOISE, NITEDRVR_CRASH_EN, NITEDRVR_CRASH_EN, 15750.0/2/4, 1.0, 0, 0, &nitedrvr_lfsr)
DISCRETE_MULTIPLY(NODE_62, NITEDRVR_NOISE, NITEDRVR_BANG_DATA) DISCRETE_MULTIPLY(NODE_62, NITEDRVR_NOISE, NITEDRVR_BANG_DATA)
DISCRETE_RCFILTER(NITEDRVR_BANG_SND, 1, NODE_62, 545.6, 3.3e-7) DISCRETE_RCFILTER(NITEDRVR_BANG_SND, NODE_62, 545.6, 3.3e-7)
/************************************************/ /************************************************/
/* Skid circuits ripped from other drivers */ /* Skid circuits ripped from other drivers */
@ -127,7 +127,7 @@ DISCRETE_SOUND_START(nitedrvr)
/* the duty variance is so small we ignore it */ /* the duty variance is so small we ignore it */
/************************************************/ /************************************************/
DISCRETE_INVERT(NODE_70, NITEDRVR_NOISE) DISCRETE_INVERT(NODE_70, NITEDRVR_NOISE)
DISCRETE_RCFILTER(NODE_71, 1, NODE_70, 1000, 1e-5) DISCRETE_RCFILTER(NODE_71, NODE_70, 1000, 1e-5)
DISCRETE_MULTADD(NODE_72, NODE_71, 940.0-630.0, ((940.0-630.0)/2)+630.0) DISCRETE_MULTADD(NODE_72, NODE_71, 940.0-630.0, ((940.0-630.0)/2)+630.0)
DISCRETE_SQUAREWAVE(NITEDRVR_SCREECH1_SND, NITEDRVR_SKID1_EN, NODE_72, 226.9, 31.5, 0, 0.0) DISCRETE_SQUAREWAVE(NITEDRVR_SCREECH1_SND, NITEDRVR_SKID1_EN, NODE_72, 226.9, 31.5, 0, 0.0)

View File

@ -370,7 +370,6 @@ DISCRETE_SOUND_START(phoenix)
NODE_22, NODE_22,
NODE_23) NODE_23)
DISCRETE_RCFILTER(NODE_25, DISCRETE_RCFILTER(NODE_25,
1,
NODE_24, NODE_24,
1.0/(1.0/RES_K(10) + 1.0/RES_K(100)), /* R19, R20 */ 1.0/(1.0/RES_K(10) + 1.0/RES_K(100)), /* R19, R20 */
CAP_U(.047)) /* C5 */ CAP_U(.047)) /* C5 */
@ -429,7 +428,6 @@ DISCRETE_SOUND_START(phoenix)
&phoenix_effect2_mixer2) &phoenix_effect2_mixer2)
/* C22 charging is R45 in parallel with R46, R42 and the 555 CV internal resistance */ /* C22 charging is R45 in parallel with R46, R42 and the 555 CV internal resistance */
DISCRETE_RCFILTER(NODE_37, DISCRETE_RCFILTER(NODE_37,
1, /* ENAB */
NODE_36, NODE_36,
1.0/ (1.0/RES_K(5.1) + (1.0/(RES_K(5.1) + 1.0/(1.0/RES_K(10) + 1.0/RES_K(5) + 1.0/RES_K(10)) ))), 1.0/ (1.0/RES_K(5.1) + (1.0/(RES_K(5.1) + 1.0/(1.0/RES_K(10) + 1.0/RES_K(5) + 1.0/RES_K(10)) ))),
CAP_U(100)) /* R45, R46, R42, internal 555 Rs, C22 */ CAP_U(100)) /* R45, R46, R42, internal 555 Rs, C22 */

View File

@ -74,7 +74,7 @@ DISCRETE_SOUND_START(poolshrk)
/* Bump is just a triggered 128V signal */ /* Bump is just a triggered 128V signal */
/************************************************/ /************************************************/
DISCRETE_SQUAREWFIX(NODE_20, POOLSHRK_BUMP_EN, 15750.0/2.0/128.0, 3.4, 50.0, 3.4/2, 0.0) // 128V signal 3.4V DISCRETE_SQUAREWFIX(NODE_20, POOLSHRK_BUMP_EN, 15750.0/2.0/128.0, 3.4, 50.0, 3.4/2, 0.0) // 128V signal 3.4V
DISCRETE_RCFILTER(POOLSHRK_BUMP_SND, 1, NODE_20, 470, 4.7e-6) // Filtered by R53/C14 DISCRETE_RCFILTER(POOLSHRK_BUMP_SND, NODE_20, 470, 4.7e-6) // Filtered by R53/C14
/************************************************/ /************************************************/
/* Score is a triggered 0-15 count of the */ /* Score is a triggered 0-15 count of the */

View File

@ -78,8 +78,8 @@ static DISCRETE_SOUND_START(qix)
DISCRETE_SWITCH(NODE_22, 1, QIX_VOL_DATA_R, QIX_DAC_DATA, NODE_21) DISCRETE_SWITCH(NODE_22, 1, QIX_VOL_DATA_R, QIX_DAC_DATA, NODE_21)
/* Filter the DC using the lowest case filter. */ /* Filter the DC using the lowest case filter. */
DISCRETE_CRFILTER(NODE_13, 1, NODE_12, RES_K(1.5), CAP_U(1)) DISCRETE_CRFILTER(NODE_13, NODE_12, RES_K(1.5), CAP_U(1))
DISCRETE_CRFILTER(NODE_23, 1, NODE_22, RES_K(1.5), CAP_U(1)) DISCRETE_CRFILTER(NODE_23, NODE_22, RES_K(1.5), CAP_U(1))
DISCRETE_OUTPUT(NODE_13, 1) DISCRETE_OUTPUT(NODE_13, 1)
DISCRETE_OUTPUT(NODE_23, 1) DISCRETE_OUTPUT(NODE_23, 1)

View File

@ -341,7 +341,6 @@ DISCRETE_SOUND_START( skyraid )
* Jet, Plane sound * Jet, Plane sound
************************************************/ ************************************************/
DISCRETE_RCFILTER(NODE_30, /* IC J6, pin 5 */ DISCRETE_RCFILTER(NODE_30, /* IC J6, pin 5 */
1, /* ENAB */
SKYRAID_PLANE_SWEEP_EN, /* IN0 */ SKYRAID_PLANE_SWEEP_EN, /* IN0 */
RES_2_PARALLEL(SKYRAID_R25, SKYRAID_R24), SKYRAID_C49) RES_2_PARALLEL(SKYRAID_R25, SKYRAID_R24), SKYRAID_C49)
DISCRETE_566(NODE_31, /* IC J6, pin 3 */ DISCRETE_566(NODE_31, /* IC J6, pin 3 */
@ -391,7 +390,6 @@ DISCRETE_SOUND_START( skyraid )
SKYRAID_PLANE_SND, SKYRAID_PLANE_SND,
&skyraid_mixer) &skyraid_mixer)
DISCRETE_CRFILTER(NODE_93, DISCRETE_CRFILTER(NODE_93,
1, /* ENAB */
NODE_92, /* IN0 */ NODE_92, /* IN0 */
SKYRAID_R122 + RES_6_PARALLEL(SKYRAID_R120, SKYRAID_R32, SKYRAID_R29, SKYRAID_R30, SKYRAID_R31, RES_2_PARALLEL(SKYRAID_R27, SKYRAID_R28)), SKYRAID_R122 + RES_6_PARALLEL(SKYRAID_R120, SKYRAID_R32, SKYRAID_R29, SKYRAID_R30, SKYRAID_R31, RES_2_PARALLEL(SKYRAID_R27, SKYRAID_R28)),
SKYRAID_C93) SKYRAID_C93)

View File

@ -365,9 +365,9 @@ DISCRETE_SOUND_START( fantasy )
DISCRETE_SWITCH(NODE_11, 1, FANTASY_NOISE_LOGIC, 0, NODE_10) DISCRETE_SWITCH(NODE_11, 1, FANTASY_NOISE_LOGIC, 0, NODE_10)
DISCRETE_OP_AMP_FILTER(NODE_20, 1, NODE_11, 0, DISC_OP_AMP_FILTER_IS_BAND_PASS_1M, &fantasy_filter) DISCRETE_OP_AMP_FILTER(NODE_20, 1, NODE_11, 0, DISC_OP_AMP_FILTER_IS_BAND_PASS_1M, &fantasy_filter)
DISCRETE_RCFILTER(NODE_21, 1, NODE_20, RES_K(22), CAP_U(.01)) DISCRETE_RCFILTER(NODE_21, NODE_20, RES_K(22), CAP_U(.01))
DISCRETE_RCFILTER(NODE_22, 1, NODE_21, RES_K(22) + RES_K(22), CAP_P(2200)) DISCRETE_RCFILTER(NODE_22, NODE_21, RES_K(22) + RES_K(22), CAP_P(2200))
DISCRETE_RCFILTER(NODE_23, 1, NODE_22, RES_K(22) + RES_K(22) + RES_K(22), CAP_U(.001)) DISCRETE_RCFILTER(NODE_23, NODE_22, RES_K(22) + RES_K(22) + RES_K(22), CAP_U(.001))
DISCRETE_OUTPUT(NODE_23, 32760.0/12) DISCRETE_OUTPUT(NODE_23, 32760.0/12)
DISCRETE_SOUND_END DISCRETE_SOUND_END

View File

@ -137,7 +137,7 @@ static DISCRETE_SOUND_START(spiders)
// Fire envelope // Fire envelope
DISCRETE_MULTIPLY(NODE_41, DEFAULT_TTL_V_LOGIC_1, SPIDERS_FIRE_EN) DISCRETE_MULTIPLY(NODE_41, DEFAULT_TTL_V_LOGIC_1, SPIDERS_FIRE_EN)
DISCRETE_RCFILTER(NODE_42, 1, NODE_41,RES_K(2.2),CAP_U(47)) //R11, C11 DISCRETE_RCFILTER(NODE_42, NODE_41,RES_K(2.2),CAP_U(47)) //R11, C11
DISCRETE_TRANSFORM4(NODE_43, NODE_40, NODE_42, 2.5, 24.5,"012*3/-") DISCRETE_TRANSFORM4(NODE_43, NODE_40, NODE_42, 2.5, 24.5,"012*3/-")
DISCRETE_555_ASTABLE_CV(NODE_44, 1, RES_K(10), RES_K(22), CAP_N(100), NODE_43, &spiders_fire_555a) //R10, R18, C12 DISCRETE_555_ASTABLE_CV(NODE_44, 1, RES_K(10), RES_K(22), CAP_N(100), NODE_43, &spiders_fire_555a) //R10, R18, C12

View File

@ -158,7 +158,7 @@ static const discrete_mixer_desc sprint8_mixer =
* we will just tell the monostable it was triggered once and ignore C17/R40. * we will just tell the monostable it was triggered once and ignore C17/R40.
*/ */
#define SPRINT8_MOTOR_CIRCUIT(_car) \ #define SPRINT8_MOTOR_CIRCUIT(_car) \
DISCRETE_RCFILTER(NODE_RELATIVE(NODE_30, _car - 1), 1, NODE_RELATIVE(SPRINT8_MOTOR1_EN, _car - 1), SPRINT8_R89, SPRINT8_C26) \ DISCRETE_RCFILTER(NODE_RELATIVE(NODE_30, _car - 1), NODE_RELATIVE(SPRINT8_MOTOR1_EN, _car - 1), SPRINT8_R89, SPRINT8_C26) \
DISCRETE_ADDER2(NODE_RELATIVE(NODE_40, _car - 1), 1, NODE_RELATIVE(NODE_30, _car - 1), 0.7) /* add Q21 shift */ \ DISCRETE_ADDER2(NODE_RELATIVE(NODE_40, _car - 1), 1, NODE_RELATIVE(NODE_30, _car - 1), 0.7) /* add Q21 shift */ \
DISCRETE_555_ASTABLE_CV(NODE_RELATIVE(NODE_50, _car - 1), 1, SPRINT8_R39, 0, SPRINT8_C27, NODE_RELATIVE(NODE_40, _car - 1), &sprint8_motor_555a_desc) \ DISCRETE_555_ASTABLE_CV(NODE_RELATIVE(NODE_50, _car - 1), 1, SPRINT8_R39, 0, SPRINT8_C27, NODE_RELATIVE(NODE_40, _car - 1), &sprint8_motor_555a_desc) \
DISCRETE_555_MSTABLE(NODE_RELATIVE(NODE_60, _car - 1), 1, NODE_RELATIVE(NODE_50, _car - 1), SPRINT8_R41, SPRINT8_C28, &sprint8_motor_555m_desc) \ DISCRETE_555_MSTABLE(NODE_RELATIVE(NODE_60, _car - 1), 1, NODE_RELATIVE(NODE_50, _car - 1), SPRINT8_R41, SPRINT8_C28, &sprint8_motor_555m_desc) \
@ -200,7 +200,6 @@ DISCRETE_SOUND_START( sprint8 )
DISCRETE_TASK_START(1) DISCRETE_TASK_START(1)
DISCRETE_GAIN(NODE_70, SPRINT8_NOISE, DEFAULT_TTL_V_LOGIC_1 * RES_VOLTAGE_DIVIDER(SPRINT8_R148, SPRINT8_R147)) DISCRETE_GAIN(NODE_70, SPRINT8_NOISE, DEFAULT_TTL_V_LOGIC_1 * RES_VOLTAGE_DIVIDER(SPRINT8_R148, SPRINT8_R147))
DISCRETE_CRFILTER_VREF(NODE_71, DISCRETE_CRFILTER_VREF(NODE_71,
1, /* ENAB */
NODE_70, /* IN0 */ NODE_70, /* IN0 */
RES_2_PARALLEL(SPRINT8_R148, SPRINT8_R147) + RES_2_PARALLEL(RES_K(5), RES_K(10)), RES_2_PARALLEL(SPRINT8_R148, SPRINT8_R147) + RES_2_PARALLEL(RES_K(5), RES_K(10)),
SPRINT8_C90, SPRINT8_C90,
@ -227,7 +226,6 @@ DISCRETE_SOUND_START( sprint8 )
&sprint8_crash_screech_mixer) &sprint8_crash_screech_mixer)
DISCRETE_CRFILTER_VREF(NODE_76, DISCRETE_CRFILTER_VREF(NODE_76,
1, /* ENAB */
NODE_75, /* IN0 */ NODE_75, /* IN0 */
SPRINT8_R93 + SPRINT8_R91, SPRINT8_C63, SPRINT8_R93 + SPRINT8_R91, SPRINT8_C63,
5) /* VREF */ 5) /* VREF */

View File

@ -186,13 +186,11 @@ DISCRETE_SOUND_START( starshp1 )
NODE_21, NODE_21,
STARSHP1_NOISE_AMPLITUDE) STARSHP1_NOISE_AMPLITUDE)
DISCRETE_RCFILTER( NODE_23, DISCRETE_RCFILTER( NODE_23,
1, /* ENAB */
NODE_22, NODE_22,
STARSHP1_FAKE_MC3340_COMPENSATION_R, STARSHP1_FAKE_MC3340_COMPENSATION_R,
STARSHP1_C61) STARSHP1_C61)
/* when NOISE_FREQ is high (NOISE_FREQ_INV is low), C59 is in circuit */ /* when NOISE_FREQ is high (NOISE_FREQ_INV is low), C59 is in circuit */
DISCRETE_RCFILTER( NODE_24, DISCRETE_RCFILTER( NODE_24,
1, /* ENAB */
NODE_22, NODE_22,
STARSHP1_FAKE_MC3340_COMPENSATION_R, STARSHP1_FAKE_MC3340_COMPENSATION_R,
STARSHP1_C61 + STARSHP1_C59) STARSHP1_C61 + STARSHP1_C59)

View File

@ -150,56 +150,56 @@ DISCRETE_SOUND_START(tank8)
DISCRETE_LOGIC_INVERT(NODE_30, TANK8_MOTOR1_EN) DISCRETE_LOGIC_INVERT(NODE_30, TANK8_MOTOR1_EN)
DISCRETE_DAC_R1(NODE_32, TANK8_MOTOR1_EN, 3.6, &tank8_dac) DISCRETE_DAC_R1(NODE_32, TANK8_MOTOR1_EN, 3.6, &tank8_dac)
DISCRETE_555_ASTABLE_CV(NODE_33, NODE_30, RES_K(220), RES_K(39), CAP_U(0.22), NODE_32, &tank8_555_a) DISCRETE_555_ASTABLE_CV(NODE_33, NODE_30, RES_K(220), RES_K(39), CAP_U(0.22), NODE_32, &tank8_555_a)
DISCRETE_CRFILTER_VREF(NODE_34, 1, NODE_33, RES_K(22), CAP_U(0.001), 5.0) DISCRETE_CRFILTER_VREF(NODE_34, NODE_33, RES_K(22), CAP_U(0.001), 5.0)
DISCRETE_555_MSTABLE(NODE_35, 1, NODE_34, RES_K(56), CAP_U(0.1), &tank8_555_m) DISCRETE_555_MSTABLE(NODE_35, 1, NODE_34, RES_K(56), CAP_U(0.1), &tank8_555_m)
DISCRETE_OP_AMP_FILTER(TANK8_MOTOR1, 1, NODE_35, 0, DISC_OP_AMP_FILTER_IS_BAND_PASS_1M, &tank8_filt) DISCRETE_OP_AMP_FILTER(TANK8_MOTOR1, 1, NODE_35, 0, DISC_OP_AMP_FILTER_IS_BAND_PASS_1M, &tank8_filt)
DISCRETE_LOGIC_INVERT(NODE_40, TANK8_MOTOR2_EN) DISCRETE_LOGIC_INVERT(NODE_40, TANK8_MOTOR2_EN)
DISCRETE_DAC_R1(NODE_42, TANK8_MOTOR2_EN, 3.6, &tank8_dac) DISCRETE_DAC_R1(NODE_42, TANK8_MOTOR2_EN, 3.6, &tank8_dac)
DISCRETE_555_ASTABLE_CV(NODE_43, NODE_40, RES_K(220), RES_K(39), CAP_U(0.22), NODE_42, &tank8_555_a) DISCRETE_555_ASTABLE_CV(NODE_43, NODE_40, RES_K(220), RES_K(39), CAP_U(0.22), NODE_42, &tank8_555_a)
DISCRETE_CRFILTER_VREF(NODE_44, 1, NODE_43, RES_K(22), CAP_U(0.001), 5.0) DISCRETE_CRFILTER_VREF(NODE_44, NODE_43, RES_K(22), CAP_U(0.001), 5.0)
DISCRETE_555_MSTABLE(NODE_45, 1, NODE_44, RES_K(56), CAP_U(0.1), &tank8_555_m) DISCRETE_555_MSTABLE(NODE_45, 1, NODE_44, RES_K(56), CAP_U(0.1), &tank8_555_m)
DISCRETE_OP_AMP_FILTER(TANK8_MOTOR2, 1, NODE_45, 0, DISC_OP_AMP_FILTER_IS_BAND_PASS_1M, &tank8_filt) DISCRETE_OP_AMP_FILTER(TANK8_MOTOR2, 1, NODE_45, 0, DISC_OP_AMP_FILTER_IS_BAND_PASS_1M, &tank8_filt)
DISCRETE_LOGIC_INVERT(NODE_50, TANK8_MOTOR3_EN) DISCRETE_LOGIC_INVERT(NODE_50, TANK8_MOTOR3_EN)
DISCRETE_DAC_R1(NODE_52, TANK8_MOTOR3_EN, 3.6, &tank8_dac) DISCRETE_DAC_R1(NODE_52, TANK8_MOTOR3_EN, 3.6, &tank8_dac)
DISCRETE_555_ASTABLE_CV(NODE_53, NODE_50, RES_K(220), RES_K(39), CAP_U(0.22), NODE_52, &tank8_555_a) DISCRETE_555_ASTABLE_CV(NODE_53, NODE_50, RES_K(220), RES_K(39), CAP_U(0.22), NODE_52, &tank8_555_a)
DISCRETE_CRFILTER_VREF(NODE_54, 1 , NODE_53, RES_K(22), CAP_U(0.001), 5.0) DISCRETE_CRFILTER_VREF(NODE_54, NODE_53, RES_K(22), CAP_U(0.001), 5.0)
DISCRETE_555_MSTABLE(NODE_55, 1, NODE_54, RES_K(56), CAP_U(0.1), &tank8_555_m) DISCRETE_555_MSTABLE(NODE_55, 1, NODE_54, RES_K(56), CAP_U(0.1), &tank8_555_m)
DISCRETE_OP_AMP_FILTER(TANK8_MOTOR3, 1, NODE_55, 0, DISC_OP_AMP_FILTER_IS_BAND_PASS_1M, &tank8_filt) DISCRETE_OP_AMP_FILTER(TANK8_MOTOR3, 1, NODE_55, 0, DISC_OP_AMP_FILTER_IS_BAND_PASS_1M, &tank8_filt)
DISCRETE_LOGIC_INVERT(NODE_60, TANK8_MOTOR4_EN) DISCRETE_LOGIC_INVERT(NODE_60, TANK8_MOTOR4_EN)
DISCRETE_DAC_R1(NODE_62, TANK8_MOTOR4_EN, 3.6, &tank8_dac) DISCRETE_DAC_R1(NODE_62, TANK8_MOTOR4_EN, 3.6, &tank8_dac)
DISCRETE_555_ASTABLE_CV(NODE_63, NODE_60, RES_K(220), RES_K(39), CAP_U(0.22), NODE_62, &tank8_555_a) DISCRETE_555_ASTABLE_CV(NODE_63, NODE_60, RES_K(220), RES_K(39), CAP_U(0.22), NODE_62, &tank8_555_a)
DISCRETE_CRFILTER_VREF(NODE_64, 1, NODE_63, RES_K(22), CAP_U(0.001), 5.0) DISCRETE_CRFILTER_VREF(NODE_64, NODE_63, RES_K(22), CAP_U(0.001), 5.0)
DISCRETE_555_MSTABLE(NODE_65, 1, NODE_64, RES_K(56), CAP_U(0.1), &tank8_555_m) DISCRETE_555_MSTABLE(NODE_65, 1, NODE_64, RES_K(56), CAP_U(0.1), &tank8_555_m)
DISCRETE_OP_AMP_FILTER(TANK8_MOTOR4, 1, NODE_65, 0, DISC_OP_AMP_FILTER_IS_BAND_PASS_1M, &tank8_filt) DISCRETE_OP_AMP_FILTER(TANK8_MOTOR4, 1, NODE_65, 0, DISC_OP_AMP_FILTER_IS_BAND_PASS_1M, &tank8_filt)
DISCRETE_LOGIC_INVERT(NODE_70, TANK8_MOTOR5_EN) DISCRETE_LOGIC_INVERT(NODE_70, TANK8_MOTOR5_EN)
DISCRETE_DAC_R1(NODE_72, TANK8_MOTOR5_EN, 3.6, &tank8_dac) DISCRETE_DAC_R1(NODE_72, TANK8_MOTOR5_EN, 3.6, &tank8_dac)
DISCRETE_555_ASTABLE_CV(NODE_73, NODE_70, RES_K(220), RES_K(39), CAP_U(0.22), NODE_72, &tank8_555_a) DISCRETE_555_ASTABLE_CV(NODE_73, NODE_70, RES_K(220), RES_K(39), CAP_U(0.22), NODE_72, &tank8_555_a)
DISCRETE_CRFILTER_VREF(NODE_74, 1, NODE_73, RES_K(22), CAP_U(0.001), 5.0) DISCRETE_CRFILTER_VREF(NODE_74, NODE_73, RES_K(22), CAP_U(0.001), 5.0)
DISCRETE_555_MSTABLE(NODE_75, 1, NODE_74, RES_K(56), CAP_U(0.1), &tank8_555_m) DISCRETE_555_MSTABLE(NODE_75, 1, NODE_74, RES_K(56), CAP_U(0.1), &tank8_555_m)
DISCRETE_OP_AMP_FILTER(TANK8_MOTOR5, 1, NODE_75, 0, DISC_OP_AMP_FILTER_IS_BAND_PASS_1M, &tank8_filt) DISCRETE_OP_AMP_FILTER(TANK8_MOTOR5, 1, NODE_75, 0, DISC_OP_AMP_FILTER_IS_BAND_PASS_1M, &tank8_filt)
DISCRETE_LOGIC_INVERT(NODE_80, TANK8_MOTOR6_EN) DISCRETE_LOGIC_INVERT(NODE_80, TANK8_MOTOR6_EN)
DISCRETE_DAC_R1(NODE_82, TANK8_MOTOR6_EN, 3.6, &tank8_dac) DISCRETE_DAC_R1(NODE_82, TANK8_MOTOR6_EN, 3.6, &tank8_dac)
DISCRETE_555_ASTABLE_CV(NODE_83, NODE_80, RES_K(220), RES_K(39), CAP_U(0.22), NODE_82, &tank8_555_a) DISCRETE_555_ASTABLE_CV(NODE_83, NODE_80, RES_K(220), RES_K(39), CAP_U(0.22), NODE_82, &tank8_555_a)
DISCRETE_CRFILTER_VREF(NODE_84, 1, NODE_83, RES_K(22), CAP_U(0.001), 5.0) DISCRETE_CRFILTER_VREF(NODE_84, NODE_83, RES_K(22), CAP_U(0.001), 5.0)
DISCRETE_555_MSTABLE(NODE_85, 1, NODE_84, RES_K(56), CAP_U(0.1), &tank8_555_m) DISCRETE_555_MSTABLE(NODE_85, 1, NODE_84, RES_K(56), CAP_U(0.1), &tank8_555_m)
DISCRETE_OP_AMP_FILTER(TANK8_MOTOR6, 1, NODE_85, 0, DISC_OP_AMP_FILTER_IS_BAND_PASS_1M, &tank8_filt) DISCRETE_OP_AMP_FILTER(TANK8_MOTOR6, 1, NODE_85, 0, DISC_OP_AMP_FILTER_IS_BAND_PASS_1M, &tank8_filt)
DISCRETE_LOGIC_INVERT(NODE_90, TANK8_MOTOR7_EN) DISCRETE_LOGIC_INVERT(NODE_90, TANK8_MOTOR7_EN)
DISCRETE_DAC_R1(NODE_92, TANK8_MOTOR7_EN, 3.6, &tank8_dac) DISCRETE_DAC_R1(NODE_92, TANK8_MOTOR7_EN, 3.6, &tank8_dac)
DISCRETE_555_ASTABLE_CV(NODE_93, NODE_90, RES_K(220), RES_K(39), CAP_U(0.22), NODE_92, &tank8_555_a) DISCRETE_555_ASTABLE_CV(NODE_93, NODE_90, RES_K(220), RES_K(39), CAP_U(0.22), NODE_92, &tank8_555_a)
DISCRETE_CRFILTER_VREF(NODE_94, 1, NODE_93, RES_K(22), CAP_U(0.001), 5.0) DISCRETE_CRFILTER_VREF(NODE_94, NODE_93, RES_K(22), CAP_U(0.001), 5.0)
DISCRETE_555_MSTABLE(NODE_95, 1, NODE_94, RES_K(56), CAP_U(0.1), &tank8_555_m) DISCRETE_555_MSTABLE(NODE_95, 1, NODE_94, RES_K(56), CAP_U(0.1), &tank8_555_m)
DISCRETE_OP_AMP_FILTER(TANK8_MOTOR7, 1, NODE_95, 0, DISC_OP_AMP_FILTER_IS_BAND_PASS_1M, &tank8_filt) DISCRETE_OP_AMP_FILTER(TANK8_MOTOR7, 1, NODE_95, 0, DISC_OP_AMP_FILTER_IS_BAND_PASS_1M, &tank8_filt)
DISCRETE_LOGIC_INVERT(NODE_100, TANK8_MOTOR8_EN) DISCRETE_LOGIC_INVERT(NODE_100, TANK8_MOTOR8_EN)
DISCRETE_DAC_R1(NODE_102, TANK8_MOTOR8_EN, 3.6, &tank8_dac) DISCRETE_DAC_R1(NODE_102, TANK8_MOTOR8_EN, 3.6, &tank8_dac)
DISCRETE_555_ASTABLE_CV(NODE_103, NODE_100, RES_K(220), RES_K(39), CAP_U(0.22), NODE_102, &tank8_555_a) DISCRETE_555_ASTABLE_CV(NODE_103, NODE_100, RES_K(220), RES_K(39), CAP_U(0.22), NODE_102, &tank8_555_a)
DISCRETE_CRFILTER_VREF(NODE_104, 1, NODE_103, RES_K(22), CAP_U(0.001), 5.0) DISCRETE_CRFILTER_VREF(NODE_104, NODE_103, RES_K(22), CAP_U(0.001), 5.0)
DISCRETE_555_MSTABLE(NODE_105, 1, NODE_104, RES_K(56), CAP_U(0.1), &tank8_555_m) DISCRETE_555_MSTABLE(NODE_105, 1, NODE_104, RES_K(56), CAP_U(0.1), &tank8_555_m)
DISCRETE_OP_AMP_FILTER(TANK8_MOTOR8, 1, NODE_105, 0, DISC_OP_AMP_FILTER_IS_BAND_PASS_1M, &tank8_filt) DISCRETE_OP_AMP_FILTER(TANK8_MOTOR8, 1, NODE_105, 0, DISC_OP_AMP_FILTER_IS_BAND_PASS_1M, &tank8_filt)
@ -213,7 +213,7 @@ DISCRETE_SOUND_START(tank8)
DISCRETE_DIVIDE(NODE_111,1,TANK8_BUGLE_DATA2,7875.0) DISCRETE_DIVIDE(NODE_111,1,TANK8_BUGLE_DATA2,7875.0)
DISCRETE_SQUAREWAVE2(NODE_112,TANK8_BUGLE_EN,3.4, NODE_110, NODE_111,1.7,0) DISCRETE_SQUAREWAVE2(NODE_112,TANK8_BUGLE_EN,3.4, NODE_110, NODE_111,1.7,0)
DISCRETE_RCDISC3(NODE_113,1, NODE_112, RES_K(10),RES_K(1),CAP_U(0.1), 0.5) DISCRETE_RCDISC3(NODE_113,1, NODE_112, RES_K(10),RES_K(1),CAP_U(0.1), 0.5)
DISCRETE_CRFILTER(TANK8_BUGLE, 1, NODE_113, RES_K(47), CAP_U(.01)) DISCRETE_CRFILTER(TANK8_BUGLE, NODE_113, RES_K(47), CAP_U(.01))
/************************************************/ /************************************************/
/* Noise generator is built from 2 shift */ /* Noise generator is built from 2 shift */
@ -246,7 +246,7 @@ DISCRETE_SOUND_START(tank8)
/************************************************/ /************************************************/
DISCRETE_ADDER2(NODE_125, 1 , NODE_122, NODE_124 ) DISCRETE_ADDER2(NODE_125, 1 , NODE_122, NODE_124 )
DISCRETE_MULTIPLY(NODE_126, NODE_120, NODE_125 ) DISCRETE_MULTIPLY(NODE_126, NODE_120, NODE_125 )
DISCRETE_RCFILTER(NODE_127, 1, NODE_126, RES_K(47), CAP_U(0.1)) DISCRETE_RCFILTER(NODE_127, NODE_126, RES_K(47), CAP_U(0.1))
DISCRETE_ADJUSTMENT_TAG(NODE_128, DISCRETE_ADJUSTMENT_TAG(NODE_128,
1.0, // min gain of E5 1.0, // min gain of E5
1.0 + 100.0/22, // max gain of E5 = 1 + r132/r101 1.0 + 100.0/22, // max gain of E5 = 1 + r132/r101

View File

@ -1392,7 +1392,7 @@ static DISCRETE_SOUND_START( btime_sound )
DISCRETE_OP_AMP_FILTER(NODE_30, 1, NODE_04, NODE_NC, DISC_OP_AMP_FILTER_IS_BAND_PASS_1M, &btime_opamp_desc) DISCRETE_OP_AMP_FILTER(NODE_30, 1, NODE_04, NODE_NC, DISC_OP_AMP_FILTER_IS_BAND_PASS_1M, &btime_opamp_desc)
DISCRETE_MIXER2(NODE_40, 1, NODE_22, NODE_30, &btime_sound_mixer_desc) DISCRETE_MIXER2(NODE_40, 1, NODE_22, NODE_30, &btime_sound_mixer_desc)
DISCRETE_CRFILTER(NODE_41, 1, NODE_40, RES_K(10), CAP_U(10)) DISCRETE_CRFILTER(NODE_41, NODE_40, RES_K(10), CAP_U(10))
/* Amplifier is upc1181H3 /* Amplifier is upc1181H3
* *
@ -1405,7 +1405,7 @@ static DISCRETE_SOUND_START( btime_sound )
*/ */
/* Assuming a 4 Ohm impedance speaker */ /* Assuming a 4 Ohm impedance speaker */
DISCRETE_CRFILTER(NODE_43, 1, NODE_41, 3.0, CAP_U(100)) DISCRETE_CRFILTER(NODE_43, NODE_41, 3.0, CAP_U(100))
DISCRETE_OUTPUT(NODE_43, 32767.0 / 5. * 35.0) DISCRETE_OUTPUT(NODE_43, 32767.0 / 5. * 35.0)

View File

@ -1709,7 +1709,7 @@ static DISCRETE_SOUND_START( konami_sound )
/* belongs here. */ /* belongs here. */
/* Input impedance of a M51516L is typically 30k (datasheet) */ /* Input impedance of a M51516L is typically 30k (datasheet) */
DISCRETE_CRFILTER(NODE_40,1,NODE_30,RES_K(30),CAP_U(0.15)) DISCRETE_CRFILTER(NODE_40,NODE_30,RES_K(30),CAP_U(0.15))
DISCRETE_OUTPUT(NODE_40, 10.0 ) DISCRETE_OUTPUT(NODE_40, 10.0 )

View File

@ -310,7 +310,7 @@ static DISCRETE_SOUND_START( ironhors )
DISCRETE_MIXER3(NODE_30, 1, NODE_21, NODE_22, NODE_23, &ironhors_mixer_desc) DISCRETE_MIXER3(NODE_30, 1, NODE_21, NODE_22, NODE_23, &ironhors_mixer_desc)
DISCRETE_RCFILTER(NODE_31,1,NODE_04, RES_K(1), CAP_N(33) ) DISCRETE_RCFILTER(NODE_31,NODE_04, RES_K(1), CAP_N(33) )
DISCRETE_MIXER2(NODE_33, 1, NODE_30, NODE_31, &ironhors_mixer_desc_final) DISCRETE_MIXER2(NODE_33, 1, NODE_30, NODE_31, &ironhors_mixer_desc_final)
DISCRETE_OUTPUT(NODE_33, 5.0 ) DISCRETE_OUTPUT(NODE_33, 5.0 )