mirror of
https://github.com/holub/mame
synced 2025-05-19 20:29:09 +03:00
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:
parent
138d136ea8
commit
1a263d82f2
@ -691,7 +691,7 @@ static DISCRETE_STEP(dsd_555_cc)
|
||||
UINT8 flip_flop = context->flip_flop;
|
||||
|
||||
|
||||
if (DSD_555_CC__RESET)
|
||||
if (UNEXPECTED(DSD_555_CC__RESET))
|
||||
{
|
||||
/* We are in RESET */
|
||||
node->output[0] = 0;
|
||||
@ -1723,14 +1723,14 @@ static DISCRETE_STEP(dsd_ls624)
|
||||
|
||||
sample_t = node->info->sample_time; /* Change in time */
|
||||
//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);
|
||||
else
|
||||
/* close enough to 0, so we can speed things up by no longer call pow() */
|
||||
dt = context->dt_vmod_at_0;
|
||||
t = context->remain;
|
||||
en += (double) context->state * t;
|
||||
while (t + dt <= sample_t)
|
||||
while (EXPECTED(t + dt <= sample_t))
|
||||
{
|
||||
en += (double) context->state * dt;
|
||||
context->state = (1 - context->state);
|
||||
@ -1750,7 +1750,7 @@ static DISCRETE_STEP(dsd_ls624)
|
||||
break;
|
||||
case DISC_LS624_OUT_LOGIC:
|
||||
/* filter out randomness */
|
||||
if (cntf + cntr > 1)
|
||||
if (UNEXPECTED(cntf + cntr > 1))
|
||||
node->output[0] = 1;
|
||||
else
|
||||
node->output[0] = context->state;
|
||||
|
@ -96,8 +96,9 @@ struct dst_rcdisc4_context
|
||||
|
||||
struct dst_rcfilter_context
|
||||
{
|
||||
double exponent;
|
||||
double vCap;
|
||||
double vRef;
|
||||
double exponent;
|
||||
};
|
||||
|
||||
struct dst_rcfilter_sw_context
|
||||
@ -137,25 +138,18 @@ struct dst_rcintegrate_context
|
||||
* input[4] - Voltage reference. Usually 0V.
|
||||
*
|
||||
************************************************************************/
|
||||
#define DST_CRFILTER__ENABLE DISCRETE_INPUT(0)
|
||||
#define DST_CRFILTER__IN DISCRETE_INPUT(1)
|
||||
#define DST_CRFILTER__R DISCRETE_INPUT(2)
|
||||
#define DST_CRFILTER__C DISCRETE_INPUT(3)
|
||||
#define DST_CRFILTER__VREF DISCRETE_INPUT(4)
|
||||
#define DST_CRFILTER__IN DISCRETE_INPUT(0)
|
||||
#define DST_CRFILTER__R DISCRETE_INPUT(1)
|
||||
#define DST_CRFILTER__C DISCRETE_INPUT(2)
|
||||
#define DST_CRFILTER__VREF DISCRETE_INPUT(3)
|
||||
|
||||
static DISCRETE_STEP(dst_crfilter)
|
||||
{
|
||||
struct dst_rcfilter_context *context = (struct dst_rcfilter_context *)node->context;
|
||||
|
||||
if(DST_CRFILTER__ENABLE)
|
||||
{
|
||||
node->output[0] = DST_CRFILTER__IN - context->vCap;
|
||||
context->vCap += ((DST_CRFILTER__IN - DST_CRFILTER__VREF) - context->vCap) * context->exponent;
|
||||
}
|
||||
else
|
||||
{
|
||||
node->output[0] = 0;
|
||||
}
|
||||
//context->vCap += ((DST_CRFILTER__IN - context->vRef) - context->vCap) * context->exponent;
|
||||
context->vCap += (node->output[0] - context->vRef) * context->exponent;
|
||||
}
|
||||
|
||||
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->vCap = 0;
|
||||
context->vRef = DST_CRFILTER__VREF;
|
||||
node->output[0] = DST_CRFILTER__IN;
|
||||
}
|
||||
|
||||
@ -1017,11 +1012,10 @@ static DISCRETE_RESET(dst_rcdisc_mod)
|
||||
* input[4] - Voltage reference. Usually 0V.
|
||||
*
|
||||
************************************************************************/
|
||||
#define DST_RCFILTER__ENABLE DISCRETE_INPUT(0)
|
||||
#define DST_RCFILTER__VIN DISCRETE_INPUT(1)
|
||||
#define DST_RCFILTER__R DISCRETE_INPUT(2)
|
||||
#define DST_RCFILTER__C DISCRETE_INPUT(3)
|
||||
#define DST_RCFILTER__VREF DISCRETE_INPUT(4)
|
||||
#define DST_RCFILTER__VIN DISCRETE_INPUT(0)
|
||||
#define DST_RCFILTER__R DISCRETE_INPUT(1)
|
||||
#define DST_RCFILTER__C DISCRETE_INPUT(2)
|
||||
#define DST_RCFILTER__VREF DISCRETE_INPUT(3)
|
||||
|
||||
static DISCRETE_STEP(dst_rcfilter)
|
||||
{
|
||||
@ -1031,15 +1025,8 @@ static DISCRETE_STEP(dst_rcfilter)
|
||||
/* Next Value = PREV + (INPUT_VALUE - PREV)*(1-(EXP(-TIMEDELTA/RC))) */
|
||||
/************************************************************************/
|
||||
|
||||
if(DST_RCFILTER__ENABLE)
|
||||
{
|
||||
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;
|
||||
}
|
||||
context->vCap += ((DST_RCFILTER__VIN - node->output[0]) * context->exponent);
|
||||
node->output[0] = context->vCap + context->vRef;
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
context->exponent = RC_CHARGE_EXP(DST_RCFILTER__R * DST_RCFILTER__C);
|
||||
context->vRef = DST_RCFILTER__VREF;
|
||||
context->vCap = 0;
|
||||
node->output[0] = 0;
|
||||
}
|
||||
|
@ -155,7 +155,7 @@ static DISCRETE_STEP(dss_adjustment)
|
||||
INT32 rawportval = input_port_read_direct(context->port);
|
||||
|
||||
/* 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 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 */
|
||||
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;
|
||||
context->ptr++;
|
||||
|
@ -1404,7 +1404,7 @@ static DISCRETE_STEP(dst_oneshot)
|
||||
/* If the state is triggered we will need to countdown later */
|
||||
int do_count = context->state;
|
||||
|
||||
if (DST_ONESHOT__RESET)
|
||||
if (UNEXPECTED(DST_ONESHOT__RESET))
|
||||
{
|
||||
/* Hold in Reset */
|
||||
node->output[0] = 0;
|
||||
@ -1413,7 +1413,7 @@ static DISCRETE_STEP(dst_oneshot)
|
||||
else
|
||||
{
|
||||
/* are we at an edge? */
|
||||
if (trigger != context->last_trig)
|
||||
if (UNEXPECTED(trigger != context->last_trig))
|
||||
{
|
||||
/* There has been a trigger edge */
|
||||
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;
|
||||
if(context->countdown <= 0.0)
|
||||
|
@ -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;
|
||||
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 */
|
||||
source = auto_alloc(dest_node->info->device->machine, discrete_source_node);
|
||||
linked_list_add(dest_node->info,
|
||||
(linked_list_entry **) (FPTR) &dest_task->source_list,
|
||||
&dest_task->source_list,
|
||||
source);
|
||||
source->task = task;
|
||||
source->output_node = i;
|
||||
|
@ -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 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 STREAM_UPDATE( discrete_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;
|
||||
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)
|
||||
{
|
||||
const linked_list_entry *entry;
|
||||
@ -979,7 +1002,8 @@ static void find_input_nodes(const discrete_info *info)
|
||||
}
|
||||
else
|
||||
{
|
||||
node->input[inputnum] = &(block->initial[inputnum]);
|
||||
node->input[inputnum] = &(node->block->initial[inputnum]);
|
||||
//node->input[inputnum] = getDoublePtr(node->block->initial[inputnum]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3715,6 +3715,8 @@ struct _discrete_module
|
||||
|
||||
struct _node_description
|
||||
{
|
||||
const discrete_module *module; /* Node's module info */
|
||||
|
||||
double output[DISCRETE_MAX_OUTPUTS]; /* The node's last output value */
|
||||
|
||||
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 */
|
||||
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_sound_block *block; /* Points to the node's setup block. */
|
||||
|
||||
osd_ticks_t run_time;
|
||||
};
|
||||
@ -3745,8 +3746,8 @@ struct _node_description
|
||||
typedef struct _linked_list_entry linked_list_entry;
|
||||
struct _linked_list_entry
|
||||
{
|
||||
const void *ptr;
|
||||
linked_list_entry *next;
|
||||
const void *ptr;
|
||||
};
|
||||
|
||||
typedef struct _discrete_task discrete_task;
|
||||
@ -3758,8 +3759,8 @@ struct _discrete_task
|
||||
int numbuffered;
|
||||
double *ptr[DISCRETE_MAX_TASK_OUTPUTS];
|
||||
double *node_buf[DISCRETE_MAX_TASK_OUTPUTS];
|
||||
node_description *nodes[DISCRETE_MAX_TASK_OUTPUTS];
|
||||
double *source[DISCRETE_MAX_TASK_OUTPUTS];
|
||||
const node_description *nodes[DISCRETE_MAX_TASK_OUTPUTS];
|
||||
const double *source[DISCRETE_MAX_TASK_OUTPUTS];
|
||||
|
||||
/* list of source nodes */
|
||||
linked_list_entry *source_list; /* discrete_source_node */
|
||||
@ -3769,9 +3770,9 @@ typedef struct _discrete_source_node discrete_source_node;
|
||||
struct _discrete_source_node
|
||||
{
|
||||
const discrete_task *task;
|
||||
const double *ptr;
|
||||
int output_node;
|
||||
double buffer;
|
||||
double *ptr;
|
||||
};
|
||||
|
||||
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" },
|
||||
/* 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_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_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(NODE,INP0,RVAL,CVAL) { NODE, DST_CRFILTER , 4, { INP0,NODE_NC,NODE_NC }, { INP0,RVAL,CVAL }, NULL, "DISCRETE_CRFILTER" },
|
||||
#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_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" },
|
||||
@ -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_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_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_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" },
|
||||
/* 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" },
|
||||
|
@ -263,7 +263,7 @@ DISCRETE_SOUND_START(indianbt)
|
||||
* 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)
|
||||
|
||||
@ -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_RCFILTER(NODE_71, 1, NODE_70, 560.0, CAP_U(.22))
|
||||
DISCRETE_RCFILTER(POLARIS_EXPLOSIONSND, 1, NODE_71, RES_K(6.8), CAP_U(.22))
|
||||
DISCRETE_RCFILTER(NODE_71, NODE_70, 560.0, 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_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_RCFILTER(NODE_23, 1, NODE_22, 560, CAP_U(.1))
|
||||
DISCRETE_RCFILTER(NODE_24, 1, NODE_23, RES_K(6.8) + 560, CAP_U(.1))
|
||||
DISCRETE_RCFILTER(NODE_23, NODE_22, 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)
|
||||
|
||||
/************************************************/
|
||||
/* Explosion/Effect filtering */
|
||||
/************************************************/
|
||||
DISCRETE_RCFILTER(NODE_30, 1, SCHASER_EXP_STREAM, 560, CAP_U(.1))
|
||||
DISCRETE_RCFILTER(NODE_31, 1, 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_RCFILTER(NODE_30, SCHASER_EXP_STREAM, 560, CAP_U(.1))
|
||||
DISCRETE_RCFILTER(NODE_31, NODE_30, RES_K(6.8) + 560, 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)
|
||||
|
||||
/************************************************/
|
||||
/* 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)
|
||||
|
||||
/************************************************/
|
||||
|
@ -113,7 +113,7 @@ DISCRETE_SOUND_START(asteroid)
|
||||
/************************************************/
|
||||
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_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)
|
||||
|
||||
/************************************************/
|
||||
@ -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_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 */
|
||||
@ -147,7 +147,7 @@ DISCRETE_SOUND_START(asteroid)
|
||||
DISCRETE_ADDER2(NODE_52, 1, NODE_51, 7.0) /* Amplitude */
|
||||
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_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 */
|
||||
@ -159,7 +159,7 @@ DISCRETE_SOUND_START(asteroid)
|
||||
DISCRETE_ADDER2(NODE_62, 1, NODE_61, 7.0) /* Amplitude */
|
||||
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_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 */
|
||||
@ -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_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 */
|
||||
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 */
|
||||
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 */
|
||||
@ -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_SAMPLHOLD(NODE_83, ASTEROID_NOISE, NODE_82, DISC_SAMPHOLD_REDGE)
|
||||
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 */
|
||||
@ -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_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 */
|
||||
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 */
|
||||
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 */
|
||||
@ -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_SAMPLHOLD(NODE_83, ASTEROID_NOISE, NODE_82, DISC_SAMPHOLD_REDGE)
|
||||
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 */
|
||||
|
@ -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_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. */
|
||||
|
@ -31,7 +31,7 @@ DISCRETE_SOUND_START(blockade)
|
||||
/* 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_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_SOUND_END
|
||||
|
@ -122,21 +122,21 @@ DISCRETE_SOUND_START(canyon)
|
||||
/* This adjusts the high end. */
|
||||
/* 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_MULTIPLY(NODE_22, NODE_20, NODE_21)
|
||||
|
||||
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_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_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_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)
|
||||
|
||||
@ -145,21 +145,21 @@ DISCRETE_SOUND_START(canyon)
|
||||
/* for 1. But I shifted the frequencies up for */
|
||||
/* 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_MULTIPLY(NODE_42, NODE_40, NODE_41)
|
||||
|
||||
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_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_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_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)
|
||||
|
||||
@ -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_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 */
|
||||
|
@ -79,7 +79,7 @@ DISCRETE_SOUND_START(circus)
|
||||
/************************************************/
|
||||
/* 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_SOUND_END
|
||||
@ -161,8 +161,8 @@ DISCRETE_SOUND_START(robotbwl)
|
||||
/************************************************/
|
||||
/* Music is just a 1 bit DAC */
|
||||
/************************************************/
|
||||
DISCRETE_RCFILTER(NODE_20, 1, 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_RCFILTER(NODE_20, ROBOTBWL_MUSIC_BIT, RES_K(10), CAP_U(.47))
|
||||
DISCRETE_CRFILTER(ROBOTBWL_MUSIC_SND, NODE_20, RES_K(10) + RES_K(22), CAP_U(.1))
|
||||
|
||||
DISCRETE_OUTPUT(ROBOTBWL_MUSIC_SND, 1)
|
||||
DISCRETE_SOUND_END
|
||||
|
@ -37,8 +37,8 @@ DISCRETE_SOUND_START(cliffhgr)
|
||||
DISCRETE_ONOFF(NODE_05,CLIFF_ENABLE_SND_1,NODE_03)
|
||||
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_08,1,NODE_06,1.0/(1.0/RES_K(5.1)+1.0/RES_K(12)), 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,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_10,NODE_08,RES_K(12)/(RES_K(5.1)+RES_K(12)))
|
||||
|
@ -105,14 +105,14 @@ static DISCRETE_SOUND_START(crbaloon)
|
||||
* square wave.
|
||||
************************************************/
|
||||
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
|
||||
CAP_U(10),
|
||||
/* 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)))) )
|
||||
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_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
|
||||
@ -124,13 +124,13 @@ static DISCRETE_SOUND_START(crbaloon)
|
||||
DISCRETE_ONOFF(NODE_22, CRBALOON_MUSIC_EN, NODE_21)
|
||||
// DISCRETE_RAMP(NODE_21, 1, RAMP, GRAD, MIN, MAX, CLAMP)
|
||||
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.
|
||||
************************************************/
|
||||
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)
|
||||
|
||||
|
@ -439,7 +439,7 @@ static DISCRETE_SOUND_START(dkong2b)
|
||||
/* Trigger */
|
||||
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 */
|
||||
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_TASK_END()
|
||||
|
||||
@ -486,10 +486,10 @@ static DISCRETE_SOUND_START(dkong2b)
|
||||
/* Amplifier: internal amplifier */
|
||||
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_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) */
|
||||
/* 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
|
||||
DISCRETE_OUTPUT(NODE_288, 32767.0/5.0 * 10)
|
||||
#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_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))
|
||||
|
||||
/************************************************/
|
||||
@ -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_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))
|
||||
|
||||
/************************************************/
|
||||
@ -753,7 +753,7 @@ static DISCRETE_SOUND_START(radarscp)
|
||||
/* Amplifier: internal amplifier */
|
||||
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_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_SOUND_END
|
||||
@ -894,13 +894,13 @@ DISCRETE_TASK_START(1)
|
||||
|
||||
DISCRETE_LS123(NODE_110, DS_SOUND0_INV, JR_R8, JR_C14)
|
||||
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_LOGIC_XOR(NODE_115, NODE_105, NODE_106)
|
||||
|
||||
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_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.
|
||||
* 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_RCFILTER(DS_OUT_SOUND1, 1, NODE_16, JR_R19, JR_C21)
|
||||
DISCRETE_CRFILTER_VREF(NODE_16, NODE_15, JR_R4, JR_C23, 2.5)
|
||||
DISCRETE_RCFILTER(DS_OUT_SOUND1, NODE_16, JR_R19, JR_C21)
|
||||
DISCRETE_TASK_END()
|
||||
|
||||
/************************************************/
|
||||
@ -937,8 +937,8 @@ DISCRETE_TASK_START(1)
|
||||
/* 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.
|
||||
*/
|
||||
DISCRETE_CRFILTER_VREF(NODE_27, 1, NODE_26, JR_R6, JR_C30, 2.5)
|
||||
DISCRETE_RCFILTER(DS_OUT_SOUND2, 1, NODE_27, JR_R2, JR_C25)
|
||||
DISCRETE_CRFILTER_VREF(NODE_27, NODE_26, JR_R6, JR_C30, 2.5)
|
||||
DISCRETE_RCFILTER(DS_OUT_SOUND2, NODE_27, JR_R2, JR_C25)
|
||||
DISCRETE_TASK_END()
|
||||
|
||||
/************************************************/
|
||||
@ -947,7 +947,7 @@ DISCRETE_TASK_END()
|
||||
|
||||
DISCRETE_TASK_START(1)
|
||||
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_74LS624( NODE_92, NODE_91, DK_SUP_V, JR_C37, DISC_LS624_OUT_ENERGY)
|
||||
DISCRETE_ENERGY_NAND(NODE_93, NODE_92, DS_SOUND9)
|
||||
@ -986,7 +986,7 @@ DISCRETE_TASK_START(2)
|
||||
/* Amplifier: internal amplifier
|
||||
* 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_TASK_END()
|
||||
|
||||
|
@ -91,21 +91,21 @@ DISCRETE_SOUND_START(dragrace)
|
||||
/* 0k = 214Hz. 250k = 4416Hz */
|
||||
/* 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_MULTIPLY(NODE_22, NODE_20, NODE_21)
|
||||
|
||||
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_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_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_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)
|
||||
|
||||
@ -114,21 +114,21 @@ DISCRETE_SOUND_START(dragrace)
|
||||
/* Car1. But I shifted the frequencies up for */
|
||||
/* 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_MULTIPLY(NODE_42, NODE_40, NODE_41)
|
||||
|
||||
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_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_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_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)
|
||||
|
||||
@ -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_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_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 */
|
||||
@ -165,7 +167,7 @@ DISCRETE_SOUND_START(dragrace)
|
||||
/************************************************/
|
||||
DISCRETE_INVERT(NODE_70, DRAGRACE_NOISE)
|
||||
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_ONOFF(DRAGRACE_SCREECH1_SND, DRAGRACE_SCREECH1_EN, NODE_73)
|
||||
DISCRETE_ONOFF(DRAGRACE_SCREECH2_SND, DRAGRACE_SCREECH2_EN, NODE_73)
|
||||
|
@ -344,7 +344,7 @@ static DISCRETE_SOUND_START(galaxian)
|
||||
DISCRETE_LOGIC_INVERT(NODE_170, GAL_INP_FIRE)
|
||||
DISCRETE_MULTIPLY(NODE_171, TTL_OUT, GAL_INP_FIRE)
|
||||
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 */
|
||||
DISCRETE_TRANSFORM5(NODE_177, NODE_152, TTL_OUT, 1.0/GAL_R46, NODE_173, 1.0/GAL_R48,
|
||||
"01*2*34*+" )
|
||||
|
@ -73,7 +73,7 @@ DISCRETE_SOUND_START(hitme)
|
||||
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. */
|
||||
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 */
|
||||
DISCRETE_OUTPUT(HITME_FINAL_SND,32000.0/3.8)
|
||||
|
@ -327,12 +327,12 @@ static DISCRETE_SOUND_START( m52_sound_c )
|
||||
|
||||
/* Sallen - Key Filter */
|
||||
/* 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)
|
||||
|
||||
/* Mix signals */
|
||||
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)
|
||||
|
||||
|
@ -59,7 +59,7 @@ DISCRETE_SOUND_START(llander)
|
||||
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_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
|
||||
|
||||
|
@ -233,9 +233,9 @@ DISCRETE_SOUND_START( m79amb )
|
||||
12, 0, 12, /* VPOS,VNEG,VCHARGE */
|
||||
DISC_566_OUT_DC | DISC_566_OUT_TRIANGLE)
|
||||
DISCRETE_CRFILTER(NODE_53,
|
||||
M79AMB_MC_CONTROL_EN, /* Q13 */
|
||||
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
|
||||
@ -249,11 +249,9 @@ DISCRETE_SOUND_START( m79amb )
|
||||
M79AMB_TANK_TRUCK_JEEP_EN, /* Q16, Q17 */
|
||||
NODE_60)
|
||||
DISCRETE_CRFILTER(NODE_62,
|
||||
1, /* ENAB */
|
||||
NODE_61, M79AMB_R48 + M79AMB_R49, M79AMB_C26)
|
||||
DISCRETE_GAIN(NODE_63, NODE_62, RES_VOLTAGE_DIVIDER(M79AMB_R48, M79AMB_R49))
|
||||
DISCRETE_RCFILTER(M79AMB_TANK_TRUCK_JEEP_SND,
|
||||
1, /* ENAB */
|
||||
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 */
|
||||
DISC_566_OUT_DC | DISC_566_OUT_TRIANGLE)
|
||||
DISCRETE_CRFILTER(NODE_73,
|
||||
M79AMB_WHISTLE_A_EN, /* Q16, Q17 */
|
||||
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
|
||||
@ -294,9 +292,9 @@ DISCRETE_SOUND_START( m79amb )
|
||||
12, 0, 12, /* VPOS,VNEG,VCHARGE */
|
||||
DISC_566_OUT_DC | DISC_566_OUT_TRIANGLE)
|
||||
DISCRETE_CRFILTER(NODE_83,
|
||||
M79AMB_WHISTLE_B_EN, /* Q19, Q20*/
|
||||
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
|
||||
@ -312,7 +310,6 @@ DISCRETE_SOUND_START( m79amb )
|
||||
M79AMB_WHISTLE_B_SND,
|
||||
&m79amb_final_mix)
|
||||
DISCRETE_RCFILTER(NODE_91,
|
||||
1, /* ENAB */
|
||||
NODE_90, M79AMB_R86, M79AMB_C41)
|
||||
|
||||
DISCRETE_OUTPUT(NODE_91, 32000.0/5)
|
||||
|
@ -222,13 +222,13 @@ DISCRETE_SOUND_START( madalien )
|
||||
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_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)
|
||||
|
||||
/************************************************
|
||||
* 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.
|
||||
DISCRETE_CLAMP(NODE_62, NODE_60, 0, 12)
|
||||
// the 0.047uF cap to ground just removes real world spikes.
|
||||
|
@ -1,7 +1,6 @@
|
||||
#include "driver.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "cpu/mcs48/mcs48.h"
|
||||
#include "sound/dac.h"
|
||||
#include "sound/ay8910.h"
|
||||
#include "sound/discrete.h"
|
||||
|
||||
@ -203,16 +202,16 @@ static DISCRETE_STEP( mario_custom_run )
|
||||
|
||||
double sample_t = node->info->sample_time;
|
||||
double vn, exponent, t = 0;
|
||||
int update_exponent = 0;
|
||||
int update_exponent;
|
||||
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);
|
||||
else
|
||||
/* close enough to 0, so we can speed things up by no longer call pow() */
|
||||
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);
|
||||
else
|
||||
t2 = context->dt_in2_at_0;
|
||||
@ -222,9 +221,10 @@ static DISCRETE_STEP( mario_custom_run )
|
||||
/* state before time advance */
|
||||
vn = (double) (context->state1 ^ context->state2);
|
||||
vn *= MARIO_CUSTOM_VOUT;
|
||||
update_exponent = 0;
|
||||
if (context->remain1 < context->remain2)
|
||||
{
|
||||
if (context->remain1 < sample_t)
|
||||
if (EXPECTED(context->remain1 < sample_t))
|
||||
{
|
||||
t = context->remain1;
|
||||
update_exponent = 1;
|
||||
@ -242,7 +242,7 @@ static DISCRETE_STEP( mario_custom_run )
|
||||
}
|
||||
else
|
||||
{
|
||||
if (context->remain2 < sample_t)
|
||||
if (EXPECTED(context->remain2 < sample_t))
|
||||
{
|
||||
t = context->remain2;
|
||||
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);
|
||||
else
|
||||
exponent = context->exponent_c3;
|
||||
@ -313,7 +313,7 @@ static DISCRETE_SOUND_START(mario)
|
||||
DISCRETE_TASK_START(1)
|
||||
DISCRETE_INPUT_PULSE(DS_SOUND0_INV, 1)
|
||||
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,
|
||||
MR_MIXER_RPAR, MR_C31, &mario_custom_run_info)
|
||||
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_INPUT_PULSE(DS_SOUND1_INV, 1)
|
||||
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,
|
||||
MR_MIXER_RPAR, MR_C31, &mario_custom_run_info)
|
||||
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_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_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_LOGIC_AND(NODE_120, NODE_115, NODE_110)
|
||||
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()
|
||||
|
||||
/************************************************/
|
||||
@ -368,10 +368,10 @@ static DISCRETE_SOUND_START(mario)
|
||||
DISCRETE_TASK_START(1)
|
||||
DISCRETE_INPUT_BUFFER(DS_DAC, 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_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()
|
||||
|
||||
|
||||
@ -385,9 +385,9 @@ static DISCRETE_SOUND_START(mario)
|
||||
/* Amplifier: internal amplifier
|
||||
* 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 */
|
||||
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_WAVELOG1(DS_OUT_SOUND0, 32767/5.0)
|
||||
//DISCRETE_WAVELOG2(NODE_296, 32767/5.0 * 2, DS_SOUND7_INV, 10000)
|
||||
|
@ -327,7 +327,7 @@ static DISCRETE_SOUND_START(tornbase)
|
||||
/* 47K resistor (R601) and 0.047uF capacitor (C601)
|
||||
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 */
|
||||
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 */
|
||||
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. */
|
||||
DISCRETE_CRFILTER_VREF(NODE_40,
|
||||
1, /* ENAB */
|
||||
NODE_36, /* IN0 */
|
||||
RES_K(250), /* R311, R312, R402, R403 in parallel */
|
||||
CAP_U(0.1), /* c301 */
|
||||
@ -565,12 +564,10 @@ static DISCRETE_SOUND_START(maze)
|
||||
2.5, /* INP0 - center voltage of R402, R403 */
|
||||
NODE_40) /* INP1 */
|
||||
DISCRETE_CRFILTER(NODE_42,
|
||||
1, /* ENAB */
|
||||
NODE_41, /* IN0 */
|
||||
RES_K(56 + 390), /* R404 + R405 */
|
||||
CAP_P(0.01) ) /* C401 */
|
||||
DISCRETE_RCFILTER(NODE_43,
|
||||
1, /* ENAB */
|
||||
NODE_42, /* IN0 */
|
||||
RES_K(56), /* R404 */
|
||||
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_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(BOOTHILL_L_SHOT_SND, 1, NODE_31, RES_K(12) + RES_K(68), CAP_U(.0022))
|
||||
DISCRETE_RCFILTER(NODE_31, NODE_30, RES_K(12), CAP_U(.01))
|
||||
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_RCFILTER(NODE_36, 1, 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(NODE_36, NODE_35, RES_K(12), CAP_U(.01))
|
||||
DISCRETE_RCFILTER(BOOTHILL_R_SHOT_SND, NODE_36, RES_K(12) + RES_K(68), CAP_U(.0033))
|
||||
|
||||
/************************************************
|
||||
* Hit sounds
|
||||
************************************************/
|
||||
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(BOOTHILL_L_HIT_SND, 1, NODE_41, RES_K(12) + RES_K(100), CAP_U(.0033))
|
||||
DISCRETE_RCFILTER(NODE_41, NODE_40, RES_K(12), CAP_U(.033))
|
||||
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_RCFILTER(NODE_46, 1, 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(NODE_46, NODE_45, RES_K(12), CAP_U(.0033))
|
||||
DISCRETE_RCFILTER(BOOTHILL_R_HIT_SND, NODE_46, RES_K(12) + RES_K(100), CAP_U(.0022))
|
||||
|
||||
/************************************************
|
||||
* 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. */
|
||||
DISCRETE_CRFILTER_VREF(NODE_31,
|
||||
1, /* ENAB */
|
||||
NODE_30, /* IN0 */
|
||||
RES_K(250), /* R409, R415, R414, R413 in parallel */
|
||||
CAP_U(0.1), /* c401 */
|
||||
@ -1041,12 +1037,10 @@ static DISCRETE_SOUND_START(checkmat)
|
||||
2.5, /* INP0 - center voltage of R413, R414 */
|
||||
NODE_31) /* INP1 */
|
||||
DISCRETE_CRFILTER(NODE_33,
|
||||
1, /* ENAB */
|
||||
NODE_32, /* IN0 */
|
||||
RES_K(56 + 47 + 200), /* R412 + R408 + part of R411 */
|
||||
CAP_P(0.01) ) /* C404 */
|
||||
DISCRETE_RCFILTER(CHECKMAT_TONE_SND,
|
||||
1, /* ENAB */
|
||||
NODE_33, /* IN0 */
|
||||
RES_K(56), /* R412 */
|
||||
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_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_CRFILTER(DESERTGU_RIFLE_SHOT_SND, 1, NODE_31, RES_K(12) + RES_K(68), CAP_U(.0022))
|
||||
DISCRETE_RCFILTER(NODE_31, NODE_30, RES_K(12), CAP_U(.01))
|
||||
DISCRETE_CRFILTER(DESERTGU_RIFLE_SHOT_SND, NODE_31, RES_K(12) + RES_K(68), CAP_U(.0022))
|
||||
|
||||
/************************************************
|
||||
* 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_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_CRFILTER(NODE_32, 1, NODE_31, RES_K(15) + RES_K(39), CAP_U(.01))
|
||||
DISCRETE_RCFILTER(NODE_31, NODE_30, RES_K(15), 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)))
|
||||
|
||||
/************************************************
|
||||
@ -2190,11 +2184,9 @@ static const discrete_mixer_desc spacwalk_mixer =
|
||||
************************************************/
|
||||
#define SPACWALK_SPRINGBOARD_HIT_CIRCUIT(_num) \
|
||||
DISCRETE_RCFILTER(NODE_RELATIVE(NODE_29, _num), \
|
||||
1, /* ENAB */ \
|
||||
SPACWALK_NOISE, /* IN0 */ \
|
||||
RES_K(330), CAP_U(.1)) \
|
||||
DISCRETE_RCFILTER(NODE_RELATIVE(NODE_31, _num), \
|
||||
1, /* ENAB */ \
|
||||
NODE_RELATIVE(NODE_29, _num), /* IN0 */ \
|
||||
RES_K(330) + RES_K(150), CAP_U(.1)) \
|
||||
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_hit_tvca_info)
|
||||
DISCRETE_RCFILTER(NODE_21,
|
||||
1, /* ENAB */
|
||||
NODE_20, /* IN0 */
|
||||
SPACWALK_R307, SPACWALK_C303)
|
||||
DISCRETE_RCFILTER(SPACWALK_TARGET_HIT_SND,
|
||||
1, /* ENAB */
|
||||
NODE_21, /* IN0 */
|
||||
SPACWALK_R307 + SPACWALK_R308, SPACWALK_C304)
|
||||
|
||||
@ -2284,7 +2274,6 @@ DISCRETE_GAIN(NODE_RELATIVE(SPACWALK_SPRINGBOARD_HIT1_SND, _num - 1),
|
||||
NODE_50, /* VMOD1 */
|
||||
&spacwalk_sb_miss_vco)
|
||||
DISCRETE_CRFILTER(NODE_53,
|
||||
1, /* ENAB */
|
||||
NODE_52, /* IN0 */
|
||||
SPACWALK_R417, SPACWALK_C453)
|
||||
/* 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*/
|
||||
&spacwalk_spaceship_vco)
|
||||
DISCRETE_RCFILTER(NODE_62,
|
||||
1, /* ENAB */
|
||||
NODE_61, /* IN0 */
|
||||
RES_K(1), CAP_U(0.15))
|
||||
DISCRETE_RCFILTER(SPACWALK_SPACE_SHIP_SND,
|
||||
1, /* ENAB */
|
||||
NODE_62, /* IN0 */
|
||||
RES_K(1) + RES_K(10), CAP_U(0.015))
|
||||
|
||||
@ -2427,7 +2414,7 @@ static DISCRETE_SOUND_START(dogpatch)
|
||||
/************************************************
|
||||
* 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)
|
||||
|
||||
@ -2806,7 +2793,6 @@ static DISCRETE_SOUND_START(spcenctr)
|
||||
DISC_OP_AMP_FILTER_IS_BAND_PASS_1M | DISC_OP_AMP_IS_NORTON,
|
||||
&spcenctr_enemy_ship_shot_filt)
|
||||
DISCRETE_CRFILTER(SPCENCTR_ENEMY_SHIP_SHOT_SND,
|
||||
1, /* ENAB */
|
||||
NODE_23, /* IN0 */
|
||||
RES_K(1.8), /* R116 */
|
||||
CAP_U(0.1) ) /* C104 */
|
||||
@ -2833,7 +2819,6 @@ static DISCRETE_SOUND_START(spcenctr)
|
||||
0, /* MIN */
|
||||
12) /* MAX */
|
||||
DISCRETE_CRFILTER(NODE_34,
|
||||
1, /* ENAB */
|
||||
SPCENCTR_NOISE, /* IN0 */
|
||||
RES_M(1) + RES_K(330), /* R507, R509 */
|
||||
CAP_U(0.1) ) /* C503 */
|
||||
@ -2911,12 +2896,10 @@ static DISCRETE_SOUND_START(spcenctr)
|
||||
0, /* no IN1 */
|
||||
&spcenctr_explosion_tvca)
|
||||
DISCRETE_RCFILTER(NODE_71,
|
||||
1, /* ENAB */
|
||||
NODE_70, /* IN0 */
|
||||
RES_K(1.8), /* R405 */
|
||||
CAP_U(0.22) ) /* C401 */
|
||||
DISCRETE_RCFILTER(SPCENCTR_EXPLOSION_SND,
|
||||
1, /* ENAB */
|
||||
NODE_71, /* IN0 */
|
||||
RES_K(1.8) + RES_K(3.6), /* R405 + R406 */
|
||||
CAP_U(0.22) ) /* C402 */
|
||||
@ -3177,7 +3160,6 @@ static DISCRETE_SOUND_START(bowler)
|
||||
0, /* no IN1 */
|
||||
&bowler_fowl_tvca)
|
||||
DISCRETE_CRFILTER(BOWLER_FOWL_SND,
|
||||
1, /* ENAB */
|
||||
NODE_21, /* IN0 */
|
||||
RES_K(68), /* R1120 */
|
||||
CAP_U(0.1) ) /* C1048 */
|
||||
@ -3741,12 +3723,10 @@ static const discrete_mixer_desc invaders_mixer =
|
||||
CAP_U(0.1), /* C29 */ \
|
||||
&invaders_thump_555) \
|
||||
DISCRETE_RCFILTER(INVADERS_NODE(32, _board), \
|
||||
1, /* ENAB */ \
|
||||
INVADERS_NODE(31, _board), /* IN0 */ \
|
||||
100, /* R132 */ \
|
||||
CAP_U(4.7) ) /* C31 */ \
|
||||
DISCRETE_RCFILTER(INVADERS_NODE(INVADERS_FLEET_SND, _board), \
|
||||
1, /* ENAB */ \
|
||||
INVADERS_NODE(32, _board), /* IN0 */ \
|
||||
100 + 100, /* R132 + R133 */ \
|
||||
CAP_U(10) ) /* C32 */
|
||||
@ -3822,12 +3802,10 @@ static const discrete_mixer_desc invaders_mixer =
|
||||
0, /* no IN1 */ \
|
||||
&invaders_explosion_tvca) \
|
||||
DISCRETE_RCFILTER(INVADERS_NODE(62, _board), \
|
||||
1, /* ENAB */ \
|
||||
INVADERS_NODE(61, _board), /* IN0 */ \
|
||||
RES_K(5.6), /* R84 */ \
|
||||
CAP_U(0.1) ) /* C27 */ \
|
||||
DISCRETE_RCFILTER(INVADERS_NODE(INVADERS_EXPLOSION_SND, _board), \
|
||||
1, /* ENAB */ \
|
||||
INVADERS_NODE(62, _board), /* IN0 */ \
|
||||
RES_K(5.6) + RES_K(6.8), /* R84 + R85 */ \
|
||||
CAP_U(0.1) ) /* C28 */
|
||||
@ -3856,7 +3834,6 @@ static const discrete_mixer_desc invaders_mixer =
|
||||
0, /* MIN */ \
|
||||
12) /* MAX */ \
|
||||
DISCRETE_CRFILTER(INVADERS_NODE(74, _board), \
|
||||
1, /* ENAB */ \
|
||||
INVADERS_NOISE, /* IN0 */ \
|
||||
RES_M(1) + RES_K(330), /* R29, R11 */ \
|
||||
CAP_U(0.1) ) /* C57 */ \
|
||||
|
@ -79,21 +79,21 @@ DISCRETE_SOUND_START(nitedrvr)
|
||||
/* This adjusts the high end. */
|
||||
/* 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_MULTIPLY(NODE_22, NODE_20, NODE_21)
|
||||
|
||||
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_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_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_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)
|
||||
|
||||
@ -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_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 */
|
||||
@ -127,7 +127,7 @@ DISCRETE_SOUND_START(nitedrvr)
|
||||
/* the duty variance is so small we ignore it */
|
||||
/************************************************/
|
||||
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_SQUAREWAVE(NITEDRVR_SCREECH1_SND, NITEDRVR_SKID1_EN, NODE_72, 226.9, 31.5, 0, 0.0)
|
||||
|
||||
|
@ -370,7 +370,6 @@ DISCRETE_SOUND_START(phoenix)
|
||||
NODE_22,
|
||||
NODE_23)
|
||||
DISCRETE_RCFILTER(NODE_25,
|
||||
1,
|
||||
NODE_24,
|
||||
1.0/(1.0/RES_K(10) + 1.0/RES_K(100)), /* R19, R20 */
|
||||
CAP_U(.047)) /* C5 */
|
||||
@ -429,7 +428,6 @@ DISCRETE_SOUND_START(phoenix)
|
||||
&phoenix_effect2_mixer2)
|
||||
/* C22 charging is R45 in parallel with R46, R42 and the 555 CV internal resistance */
|
||||
DISCRETE_RCFILTER(NODE_37,
|
||||
1, /* ENAB */
|
||||
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)) ))),
|
||||
CAP_U(100)) /* R45, R46, R42, internal 555 Rs, C22 */
|
||||
|
@ -74,7 +74,7 @@ DISCRETE_SOUND_START(poolshrk)
|
||||
/* 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_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 */
|
||||
|
@ -78,8 +78,8 @@ static DISCRETE_SOUND_START(qix)
|
||||
DISCRETE_SWITCH(NODE_22, 1, QIX_VOL_DATA_R, QIX_DAC_DATA, NODE_21)
|
||||
|
||||
/* 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_23, 1, NODE_22, RES_K(1.5), CAP_U(1))
|
||||
DISCRETE_CRFILTER(NODE_13, NODE_12, 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_23, 1)
|
||||
|
@ -341,7 +341,6 @@ DISCRETE_SOUND_START( skyraid )
|
||||
* Jet, Plane sound
|
||||
************************************************/
|
||||
DISCRETE_RCFILTER(NODE_30, /* IC J6, pin 5 */
|
||||
1, /* ENAB */
|
||||
SKYRAID_PLANE_SWEEP_EN, /* IN0 */
|
||||
RES_2_PARALLEL(SKYRAID_R25, SKYRAID_R24), SKYRAID_C49)
|
||||
DISCRETE_566(NODE_31, /* IC J6, pin 3 */
|
||||
@ -391,7 +390,6 @@ DISCRETE_SOUND_START( skyraid )
|
||||
SKYRAID_PLANE_SND,
|
||||
&skyraid_mixer)
|
||||
DISCRETE_CRFILTER(NODE_93,
|
||||
1, /* ENAB */
|
||||
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_C93)
|
||||
|
@ -365,9 +365,9 @@ DISCRETE_SOUND_START( fantasy )
|
||||
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_RCFILTER(NODE_21, 1, 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_23, 1, NODE_22, RES_K(22) + RES_K(22) + RES_K(22), CAP_U(.001))
|
||||
DISCRETE_RCFILTER(NODE_21, NODE_20, RES_K(22), CAP_U(.01))
|
||||
DISCRETE_RCFILTER(NODE_22, NODE_21, RES_K(22) + RES_K(22), CAP_P(2200))
|
||||
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_SOUND_END
|
||||
|
@ -137,7 +137,7 @@ static DISCRETE_SOUND_START(spiders)
|
||||
|
||||
// Fire envelope
|
||||
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_555_ASTABLE_CV(NODE_44, 1, RES_K(10), RES_K(22), CAP_N(100), NODE_43, &spiders_fire_555a) //R10, R18, C12
|
||||
|
@ -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.
|
||||
*/
|
||||
#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_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) \
|
||||
@ -200,7 +200,6 @@ DISCRETE_SOUND_START( sprint8 )
|
||||
DISCRETE_TASK_START(1)
|
||||
DISCRETE_GAIN(NODE_70, SPRINT8_NOISE, DEFAULT_TTL_V_LOGIC_1 * RES_VOLTAGE_DIVIDER(SPRINT8_R148, SPRINT8_R147))
|
||||
DISCRETE_CRFILTER_VREF(NODE_71,
|
||||
1, /* ENAB */
|
||||
NODE_70, /* IN0 */
|
||||
RES_2_PARALLEL(SPRINT8_R148, SPRINT8_R147) + RES_2_PARALLEL(RES_K(5), RES_K(10)),
|
||||
SPRINT8_C90,
|
||||
@ -227,7 +226,6 @@ DISCRETE_SOUND_START( sprint8 )
|
||||
&sprint8_crash_screech_mixer)
|
||||
|
||||
DISCRETE_CRFILTER_VREF(NODE_76,
|
||||
1, /* ENAB */
|
||||
NODE_75, /* IN0 */
|
||||
SPRINT8_R93 + SPRINT8_R91, SPRINT8_C63,
|
||||
5) /* VREF */
|
||||
|
@ -186,13 +186,11 @@ DISCRETE_SOUND_START( starshp1 )
|
||||
NODE_21,
|
||||
STARSHP1_NOISE_AMPLITUDE)
|
||||
DISCRETE_RCFILTER( NODE_23,
|
||||
1, /* ENAB */
|
||||
NODE_22,
|
||||
STARSHP1_FAKE_MC3340_COMPENSATION_R,
|
||||
STARSHP1_C61)
|
||||
/* when NOISE_FREQ is high (NOISE_FREQ_INV is low), C59 is in circuit */
|
||||
DISCRETE_RCFILTER( NODE_24,
|
||||
1, /* ENAB */
|
||||
NODE_22,
|
||||
STARSHP1_FAKE_MC3340_COMPENSATION_R,
|
||||
STARSHP1_C61 + STARSHP1_C59)
|
||||
|
@ -150,56 +150,56 @@ DISCRETE_SOUND_START(tank8)
|
||||
DISCRETE_LOGIC_INVERT(NODE_30, TANK8_MOTOR1_EN)
|
||||
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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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 */
|
||||
@ -246,7 +246,7 @@ DISCRETE_SOUND_START(tank8)
|
||||
/************************************************/
|
||||
DISCRETE_ADDER2(NODE_125, 1 , NODE_122, NODE_124 )
|
||||
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,
|
||||
1.0, // min gain of E5
|
||||
1.0 + 100.0/22, // max gain of E5 = 1 + r132/r101
|
||||
|
@ -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_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
|
||||
*
|
||||
@ -1405,7 +1405,7 @@ static DISCRETE_SOUND_START( btime_sound )
|
||||
*/
|
||||
|
||||
/* 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)
|
||||
|
||||
|
@ -1709,7 +1709,7 @@ static DISCRETE_SOUND_START( konami_sound )
|
||||
/* belongs here. */
|
||||
|
||||
/* 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 )
|
||||
|
||||
|
@ -310,7 +310,7 @@ static DISCRETE_SOUND_START( ironhors )
|
||||
|
||||
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_OUTPUT(NODE_33, 5.0 )
|
||||
|
Loading…
Reference in New Issue
Block a user