mirror of
https://github.com/holub/mame
synced 2025-05-16 19:00:43 +03:00
Minor optimization to the DISCRETE_INPUT modules. The node output is now calculated when a discrete_sound_w() is called instead of each step in the simulation.
Removed the Enable line from the DISCRETE_ADJUSTMENT modules. They should never be disabled. Some before/after speed tests: dkong - from 203% to 204% firetrk - from 418% to 429% phoenix - from 253% to 257% polaris - from 448% to 476%
This commit is contained in:
parent
bab5dcbbbb
commit
c43a103858
@ -87,6 +87,9 @@ WRITE8_HANDLER(discrete_sound_w)
|
||||
stream_update(info->discrete_stream);
|
||||
|
||||
*node_data = new_data;
|
||||
|
||||
/* Update the node output here so we don't have to do it each step */
|
||||
node->output[0] = *node_data * DSS_INPUT__GAIN + DSS_INPUT__OFFSET;
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -109,37 +112,29 @@ WRITE8_HANDLER(discrete_sound_w)
|
||||
* input[6] -
|
||||
*
|
||||
************************************************************************/
|
||||
#define DSS_ADJUSTMENT__ENABLE (*(node->input[0]))
|
||||
#define DSS_ADJUSTMENT__MIN (*(node->input[1]))
|
||||
#define DSS_ADJUSTMENT__MAX (*(node->input[2]))
|
||||
#define DSS_ADJUSTMENT__LOG (*(node->input[3]))
|
||||
#define DSS_ADJUSTMENT__PORT (*(node->input[4]))
|
||||
#define DSS_ADJUSTMENT__PMIN (*(node->input[5]))
|
||||
#define DSS_ADJUSTMENT__PMAX (*(node->input[6]))
|
||||
#define DSS_ADJUSTMENT__MIN (*(node->input[0]))
|
||||
#define DSS_ADJUSTMENT__MAX (*(node->input[1]))
|
||||
#define DSS_ADJUSTMENT__LOG (*(node->input[2]))
|
||||
#define DSS_ADJUSTMENT__PORT (*(node->input[3]))
|
||||
#define DSS_ADJUSTMENT__PMIN (*(node->input[4]))
|
||||
#define DSS_ADJUSTMENT__PMAX (*(node->input[5]))
|
||||
|
||||
static void dss_adjustment_step(node_description *node)
|
||||
{
|
||||
if (DSS_ADJUSTMENT__ENABLE)
|
||||
{
|
||||
struct dss_adjustment_context *context = node->context;
|
||||
INT32 rawportval = input_port_read_direct(context->port);
|
||||
struct dss_adjustment_context *context = node->context;
|
||||
INT32 rawportval = input_port_read_direct(context->port);
|
||||
|
||||
/* only recompute if the value changed from last time */
|
||||
if (rawportval != context->lastpval)
|
||||
{
|
||||
double portval = (double)(rawportval - context->pmin) * context->pscale;
|
||||
double scaledval = portval * context->scale + context->min;
|
||||
|
||||
context->lastpval = rawportval;
|
||||
if (DSS_ADJUSTMENT__LOG == 0)
|
||||
node->output[0] = scaledval;
|
||||
else
|
||||
node->output[0] = pow(10, scaledval);
|
||||
}
|
||||
}
|
||||
else
|
||||
/* only recompute if the value changed from last time */
|
||||
if (rawportval != context->lastpval)
|
||||
{
|
||||
node->output[0] = 0;
|
||||
double portval = (double)(rawportval - context->pmin) * context->pscale;
|
||||
double scaledval = portval * context->scale + context->min;
|
||||
|
||||
context->lastpval = rawportval;
|
||||
if (DSS_ADJUSTMENT__LOG == 0)
|
||||
node->output[0] = scaledval;
|
||||
else
|
||||
node->output[0] = pow(10, scaledval);
|
||||
}
|
||||
}
|
||||
|
||||
@ -191,7 +186,7 @@ static void dss_adjustment_reset(node_description *node)
|
||||
************************************************************************/
|
||||
#define DSS_CONSTANT__INIT (*(node->input[0]))
|
||||
|
||||
static void dss_constant_step(node_description *node)
|
||||
static void dss_constant_reset(node_description *node)
|
||||
{
|
||||
node->output[0]= DSS_CONSTANT__INIT;
|
||||
}
|
||||
@ -207,13 +202,6 @@ static void dss_constant_step(node_description *node)
|
||||
* input[3] - Current data value
|
||||
*
|
||||
************************************************************************/
|
||||
static void dss_input_step(node_description *node)
|
||||
{
|
||||
UINT8 *node_data = node->context;
|
||||
|
||||
node->output[0] = *node_data * DSS_INPUT__GAIN + DSS_INPUT__OFFSET;
|
||||
}
|
||||
|
||||
static void dss_input_reset(node_description *node)
|
||||
{
|
||||
UINT8 *node_data = node->context;
|
||||
@ -231,7 +219,7 @@ static void dss_input_reset(node_description *node)
|
||||
*node_data = (DSS_INPUT__INIT == 0) ? 1 : 0;
|
||||
break;
|
||||
}
|
||||
dss_input_step(node);
|
||||
node->output[0] = *node_data * DSS_INPUT__GAIN + DSS_INPUT__OFFSET;
|
||||
}
|
||||
|
||||
static void dss_input_pulse_step(node_description *node)
|
||||
|
@ -169,10 +169,10 @@ static const discrete_module module_list[] =
|
||||
|
||||
/* from disc_inp.c */
|
||||
{ DSS_ADJUSTMENT ,"DSS_ADJUSTMENT" , 1 ,sizeof(struct dss_adjustment_context) ,dss_adjustment_reset ,dss_adjustment_step },
|
||||
{ DSS_CONSTANT ,"DSS_CONSTANT" , 1 ,0 ,NULL ,dss_constant_step },
|
||||
{ DSS_INPUT_DATA ,"DSS_INPUT_DATA" , 1 ,sizeof(UINT8) ,dss_input_reset ,dss_input_step },
|
||||
{ DSS_INPUT_LOGIC ,"DSS_INPUT_LOGIC" , 1 ,sizeof(UINT8) ,dss_input_reset ,dss_input_step },
|
||||
{ DSS_INPUT_NOT ,"DSS_INPUT_NOT" , 1 ,sizeof(UINT8) ,dss_input_reset ,dss_input_step },
|
||||
{ DSS_CONSTANT ,"DSS_CONSTANT" , 1 ,0 ,dss_constant_reset ,NULL },
|
||||
{ DSS_INPUT_DATA ,"DSS_INPUT_DATA" , 1 ,sizeof(UINT8) ,dss_input_reset ,NULL },
|
||||
{ DSS_INPUT_LOGIC ,"DSS_INPUT_LOGIC" , 1 ,sizeof(UINT8) ,dss_input_reset ,NULL },
|
||||
{ DSS_INPUT_NOT ,"DSS_INPUT_NOT" , 1 ,sizeof(UINT8) ,dss_input_reset ,NULL },
|
||||
{ DSS_INPUT_PULSE ,"DSS_INPUT_PULSE" , 1 ,sizeof(UINT8) ,dss_input_reset ,dss_input_pulse_step },
|
||||
{ DSS_INPUT_STREAM,"DSS_INPUT_STREAM", 1 ,0 ,dss_input_stream_reset,dss_input_stream_step},
|
||||
|
||||
|
@ -125,9 +125,9 @@
|
||||
* DISCRETE_SOUND_START(STRUCTURENAME)
|
||||
* DISCRETE_SOUND_END
|
||||
*
|
||||
* DISCRETE_ADJUSTMENT(NODE,ENAB,MIN,MAX,LOGLIN,PORT)
|
||||
* DISCRETE_ADJUSTMENT_TAG(NODE,ENAB,MIN,MAX,LOGLIN,TAG)
|
||||
* DISCRETE_ADJUSTMENTX(NODE,ENAB,MIN,MAX,LOGLIN,PORT,PMIN,PMAX)
|
||||
* DISCRETE_ADJUSTMENT(NODE,MIN,MAX,LOGLIN,PORT)
|
||||
* DISCRETE_ADJUSTMENT_TAG(NODE,MIN,MAX,LOGLIN,TAG)
|
||||
* DISCRETE_ADJUSTMENTX(NODE,MIN,MAX,LOGLIN,PORT,PMIN,PMAX)
|
||||
* DISCRETE_CONSTANT(NODE,CONST0)
|
||||
* DISCRETE_INPUT_DATA(NODE)
|
||||
* DISCRETE_INPUTX_DATA(NODE,GAIN,OFFSET,INIT)
|
||||
@ -272,14 +272,12 @@
|
||||
* Declaration syntax
|
||||
*
|
||||
* DISCRETE_ADJUSTMENT(name of node,
|
||||
* enable node or static value,
|
||||
* static minimum value the node can take,
|
||||
* static maximum value the node can take,
|
||||
* log/linear scale 0=Linear !0=Logarithmic,
|
||||
* input port number of the adjuster)
|
||||
*
|
||||
* DISCRETE_ADJUSTMENT_TAG(name of node,
|
||||
* enable node or static value,
|
||||
* static minimum value the node can take,
|
||||
* static maximum value the node can take,
|
||||
* log/linear scale 0=Linear !0=Logarithmic,
|
||||
@ -292,7 +290,7 @@
|
||||
*
|
||||
* Example config line
|
||||
*
|
||||
* DISCRETE_ADJUSTMENT(NODE_01,1,0.0,5.0,DISC_LINADJ,0,5)
|
||||
* DISCRETE_ADJUSTMENT(NODE_01,0.0,5.0,DISC_LINADJ,0,5)
|
||||
*
|
||||
* Define an adjustment slider that takes a 0-100 input from input
|
||||
* port #5, scaling between 0.0 and 5.0. Adjustment scaling is Linear.
|
||||
@ -3930,9 +3928,9 @@ enum
|
||||
#define DISCRETE_SOUND_END { NODE_00, DSS_NULL , 0, { NODE_NC }, { 0 } ,NULL ,"End Marker" } };
|
||||
|
||||
/* from disc_inp.c */
|
||||
#define DISCRETE_ADJUSTMENT(NODE,ENAB,MIN,MAX,LOGLIN,PORT) { NODE, DSS_ADJUSTMENT , 7, { ENAB,NODE_NC,NODE_NC,NODE_NC,NODE_NC,NODE_NC,NODE_NC }, { ENAB,MIN,MAX,LOGLIN,PORT,0 ,100 }, NULL , "DISCRETE_ADJUSTMENT" },
|
||||
#define DISCRETE_ADJUSTMENT_TAG(NODE,ENAB,MIN,MAX,LOGLIN,TAG) { NODE, DSS_ADJUSTMENT , 7, { ENAB,NODE_NC,NODE_NC,NODE_NC,NODE_NC,NODE_NC,NODE_NC }, { ENAB,MIN,MAX,LOGLIN,0 ,0 ,100 }, TAG , "DISCRETE_ADJUSTMENT_TAG" },
|
||||
#define DISCRETE_ADJUSTMENTX(NODE,ENAB,MIN,MAX,LOGLIN,PORT,PMIN,PMAX) { NODE, DSS_ADJUSTMENT , 7, { ENAB,NODE_NC,NODE_NC,NODE_NC,NODE_NC,NODE_NC,NODE_NC }, { ENAB,MIN,MAX,LOGLIN,PORT,PMIN,PMAX }, NULL , "DISCRETE_ADJUSTMENTX" },
|
||||
#define DISCRETE_ADJUSTMENT(NODE,MIN,MAX,LOGLIN,PORT) { NODE, DSS_ADJUSTMENT , 7, { NODE_NC,NODE_NC,NODE_NC,NODE_NC,NODE_NC,NODE_NC }, { MIN,MAX,LOGLIN,PORT,0 ,100 }, NULL , "DISCRETE_ADJUSTMENT" },
|
||||
#define DISCRETE_ADJUSTMENT_TAG(NODE,MIN,MAX,LOGLIN,TAG) { NODE, DSS_ADJUSTMENT , 7, { NODE_NC,NODE_NC,NODE_NC,NODE_NC,NODE_NC,NODE_NC }, { MIN,MAX,LOGLIN,0 ,0 ,100 }, TAG , "DISCRETE_ADJUSTMENT_TAG" },
|
||||
#define DISCRETE_ADJUSTMENTX(NODE,MIN,MAX,LOGLIN,PORT,PMIN,PMAX) { NODE, DSS_ADJUSTMENT , 7, { NODE_NC,NODE_NC,NODE_NC,NODE_NC,NODE_NC,NODE_NC }, { MIN,MAX,LOGLIN,PORT,PMIN,PMAX }, NULL , "DISCRETE_ADJUSTMENTX" },
|
||||
#define DISCRETE_CONSTANT(NODE,CONST) { NODE, DSS_CONSTANT , 1, { NODE_NC }, { CONST } ,NULL ,"Constant" },
|
||||
#define DISCRETE_INPUT_DATA(NODE) { NODE, DSS_INPUT_DATA , 3, { NODE_NC,NODE_NC,NODE_NC }, { 1,0,0 }, NULL, "Input Data" },
|
||||
#define DISCRETE_INPUTX_DATA(NODE,GAIN,OFFSET,INIT) { NODE, DSS_INPUT_DATA , 3, { NODE_NC,NODE_NC,NODE_NC }, { GAIN,OFFSET,INIT }, NULL, "InputX Data" },
|
||||
|
@ -429,10 +429,10 @@ DISCRETE_SOUND_START(polaris)
|
||||
|
||||
/* We will cheat and just use the controls to scale the amplitude. */
|
||||
/* It is the same as taking the (0 to 50k)/50k */
|
||||
DISCRETE_ADJUSTMENT_TAG(POLARIS_ADJ_VR1, 1, 0, 1, DISC_LINADJ, "VR1")
|
||||
DISCRETE_ADJUSTMENT_TAG(POLARIS_ADJ_VR2, 1, 0, 1, DISC_LINADJ, "VR2")
|
||||
DISCRETE_ADJUSTMENT_TAG(POLARIS_ADJ_VR1, 0, 1, DISC_LINADJ, "VR1")
|
||||
DISCRETE_ADJUSTMENT_TAG(POLARIS_ADJ_VR2, 0, 1, DISC_LINADJ, "VR2")
|
||||
/* Extra cheating for VR3. We will include the resistor scaling. */
|
||||
DISCRETE_ADJUSTMENT_TAG(POLARIS_ADJ_VR3, 1, 0, 0.5376, DISC_LINADJ, "VR3")
|
||||
DISCRETE_ADJUSTMENT_TAG(POLARIS_ADJ_VR3, 0, 0.5376, DISC_LINADJ, "VR3")
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
@ -724,9 +724,9 @@ DISCRETE_SOUND_START(schaser)
|
||||
/* We will set them to adjust the realitive */
|
||||
/* gains. */
|
||||
/************************************************/
|
||||
DISCRETE_ADJUSTMENT_TAG(SCHASER_VR1, 1, 0, RES_K(50)/(RES_K(50) + RES_K(470)), DISC_LINADJ, "VR1")
|
||||
DISCRETE_ADJUSTMENT_TAG(SCHASER_VR2, 1, 0, RES_K(50)/(RES_K(50) + 560 + RES_K(6.8) + RES_K(2)), DISC_LINADJ, "VR2")
|
||||
DISCRETE_ADJUSTMENT_TAG(SCHASER_VR3, 1, 0, RES_K(50)/(RES_K(50) + 560 + RES_K(6.8) + RES_K(10)), DISC_LINADJ, "VR3")
|
||||
DISCRETE_ADJUSTMENT_TAG(SCHASER_VR1, 0, RES_K(50)/(RES_K(50) + RES_K(470)), DISC_LINADJ, "VR1")
|
||||
DISCRETE_ADJUSTMENT_TAG(SCHASER_VR2, 0, RES_K(50)/(RES_K(50) + 560 + RES_K(6.8) + RES_K(2)), DISC_LINADJ, "VR2")
|
||||
DISCRETE_ADJUSTMENT_TAG(SCHASER_VR3, 0, RES_K(50)/(RES_K(50) + 560 + RES_K(6.8) + RES_K(10)), DISC_LINADJ, "VR3")
|
||||
|
||||
/************************************************/
|
||||
/* Dot selection just selects between 4V and 8V */
|
||||
|
@ -123,7 +123,7 @@ DISCRETE_SOUND_START(canyon)
|
||||
/* 0k = 214Hz. 250k = 4416Hz */
|
||||
/************************************************/
|
||||
DISCRETE_RCFILTER(NODE_20, 1, CANYON_MOTOR1_DATA, 123000, 1e-6)
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_21, 1, (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, 1, NODE_20, NODE_21)
|
||||
|
||||
DISCRETE_MULTADD(NODE_23, 1, NODE_22, 2, 27.0/6) /* F1 = /12*2 = /6 */
|
||||
@ -146,7 +146,7 @@ DISCRETE_SOUND_START(canyon)
|
||||
/* it to sound different from motor 1. */
|
||||
/************************************************/
|
||||
DISCRETE_RCFILTER(NODE_40, 1, CANYON_MOTOR2_DATA, 123000, 1e-6)
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_41, 1, (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, 1, NODE_40, NODE_41)
|
||||
|
||||
DISCRETE_MULTADD(NODE_43, 1, NODE_42, 2, 27.0/6) /* F1 = /12*2 = /6 */
|
||||
@ -187,13 +187,13 @@ DISCRETE_SOUND_START(canyon)
|
||||
/* frequency, then decays at the rate set by */
|
||||
/* a 68k resistor and 22uf capacitor. */
|
||||
/************************************************/
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_70, 1, 50000, 100000, DISC_LINADJ, "WHISTLE1") /* R59 */
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_70, 50000, 100000, DISC_LINADJ, "WHISTLE1") /* R59 */
|
||||
DISCRETE_MULTADD(NODE_71, 1, CANYON_WHISTLE1_EN, 3.05-0.33, 0.33)
|
||||
DISCRETE_RCDISC2(NODE_72, CANYON_WHISTLE1_EN, NODE_71, 1.0, NODE_71, 68000.0, 2.2e-5) /* CV */
|
||||
DISCRETE_555_ASTABLE_CV(NODE_73, CANYON_WHISTLE1_EN, 33000, NODE_70, 1e-8, NODE_72, &canyonWhistl555)
|
||||
DISCRETE_MULTIPLY(CANYON_WHISTLESND1, CANYON_WHISTLE1_EN, NODE_73, 519.4/3.3)
|
||||
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_75, 1, 50000, 100000, DISC_LINADJ, "WHISTLE2") /* R69 */
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_75, 50000, 100000, DISC_LINADJ, "WHISTLE2") /* R69 */
|
||||
DISCRETE_MULTADD(NODE_76, 1, CANYON_WHISTLE2_EN, 3.05-0.33, 0.33)
|
||||
DISCRETE_RCDISC2(NODE_77, CANYON_WHISTLE2_EN, NODE_76, 1.0, NODE_76, 68000.0, 2.2e-5) /* CV */
|
||||
DISCRETE_555_ASTABLE_CV(NODE_78, CANYON_WHISTLE2_EN, 33000, NODE_75, 1e-8, NODE_77, &canyonWhistl555)
|
||||
|
@ -124,8 +124,8 @@ DISCRETE_SOUND_START(crash)
|
||||
DISCRETE_INPUT_LOGIC(CRASH_MUSIC_BIT)
|
||||
DISCRETE_INPUT_PULSE(CRASH_BEEPER_EN, 1)
|
||||
|
||||
DISCRETE_ADJUSTMENT_TAG(CRASH_R63, 1, 0, 5.0*RES_K(100)/(RES_K(47+100))-0.5, DISC_LINADJ, "R63")
|
||||
DISCRETE_ADJUSTMENT_TAG(CRASH_R39, 1, 0, 1, DISC_LINADJ, "R39")
|
||||
DISCRETE_ADJUSTMENT_TAG(CRASH_R63, 0, 5.0*RES_K(100)/(RES_K(47+100))-0.5, DISC_LINADJ, "R63")
|
||||
DISCRETE_ADJUSTMENT_TAG(CRASH_R39, 0, 1, DISC_LINADJ, "R39")
|
||||
|
||||
/************************************************/
|
||||
/* Music is just a 1 bit DAC */
|
||||
|
@ -97,8 +97,8 @@ static DISCRETE_SOUND_START(crbaloon)
|
||||
DISCRETE_INPUT_LOGIC(CRBALOON_MUSIC_EN)
|
||||
DISCRETE_INPUT_DATA (CRBALOON_MUSIC_DATA)
|
||||
|
||||
DISCRETE_ADJUSTMENT_TAG(CRBALOON_VR2, 1, 0, 0.5, DISC_LINADJ, "VR2")
|
||||
DISCRETE_ADJUSTMENT_TAG(CRBALOON_VR3, 1, 0, 1, DISC_LINADJ, "VR3")
|
||||
DISCRETE_ADJUSTMENT_TAG(CRBALOON_VR2, 0, 0.5, DISC_LINADJ, "VR2")
|
||||
DISCRETE_ADJUSTMENT_TAG(CRBALOON_VR3, 0, 1, DISC_LINADJ, "VR3")
|
||||
|
||||
/************************************************
|
||||
* Laugh is a VCO modulated by a constant
|
||||
|
@ -271,7 +271,7 @@ static DISCRETE_SOUND_START(dkong2b)
|
||||
DISCRETE_INPUT_LOGIC(DS_DAC_DISCHARGE)
|
||||
DISCRETE_INPUT_DATA(DS_DAC)
|
||||
// Mixing - DAC
|
||||
DISCRETE_ADJUSTMENT_TAG(DS_ADJ_DAC, 1, 0, 1, DISC_LINADJ, "VR2")
|
||||
DISCRETE_ADJUSTMENT_TAG(DS_ADJ_DAC, 0, 1, DISC_LINADJ, "VR2")
|
||||
|
||||
/************************************************/
|
||||
/* SIGNALS */
|
||||
@ -534,7 +534,7 @@ static DISCRETE_SOUND_START(radarscp)
|
||||
DISCRETE_INPUT_DATA(DS_DAC)
|
||||
|
||||
// Mixing - DAC
|
||||
DISCRETE_ADJUSTMENT_TAG(DS_ADJ_DAC, 1, 0, 1, DISC_LINADJ, "VR2")
|
||||
DISCRETE_ADJUSTMENT_TAG(DS_ADJ_DAC, 0, 1, DISC_LINADJ, "VR2")
|
||||
|
||||
/************************************************/
|
||||
/* SIGNALS */
|
||||
|
@ -92,7 +92,7 @@ DISCRETE_SOUND_START(dragrace)
|
||||
/* NOTE: freqs are ripped from Sprint for now. */
|
||||
/************************************************/
|
||||
DISCRETE_RCFILTER(NODE_20, 1, DRAGRACE_MOTOR1_DATA, 119898, 2.2e-6)
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_21, 1, (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, 1, NODE_20, NODE_21)
|
||||
|
||||
DISCRETE_MULTADD(NODE_23, 1, NODE_22, 2, 27.0/6) /* F1 = /12*2 = /6 */
|
||||
@ -115,7 +115,7 @@ DISCRETE_SOUND_START(dragrace)
|
||||
/* it to sound different from car1. */
|
||||
/************************************************/
|
||||
DISCRETE_RCFILTER(NODE_40, 1, DRAGRACE_MOTOR2_DATA, 119898, 2.2e-6)
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_41, 1, (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, 1, NODE_40, NODE_41)
|
||||
|
||||
DISCRETE_MULTADD(NODE_43, 1, NODE_42, 2, 27.0/6) /* F1 = /12*2 = /6 */
|
||||
|
@ -207,7 +207,7 @@ DISCRETE_SOUND_START(firetrk)
|
||||
/* drive a modulo 12 counter, with div6 & div12 */
|
||||
/* summed as the output of the circuit. */
|
||||
/************************************************/
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_20, 1,
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_20,
|
||||
RES_K(260), // R26 + R27 @ max
|
||||
RES_K(10), // R26 + R27 @ min
|
||||
DISC_LOGADJ, "R27")
|
||||
@ -411,7 +411,7 @@ DISCRETE_SOUND_START(superbug)
|
||||
/* latch (4 bit). This freqency is then used to */
|
||||
/* drive a modulo 12 counter. */
|
||||
/************************************************/
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_20, 1,
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_20,
|
||||
RES_K(260), // R12 + R62 @ max
|
||||
RES_K(10), // R12 + R62 @ min
|
||||
DISC_LOGADJ, "R62")
|
||||
@ -596,7 +596,7 @@ DISCRETE_SOUND_START(montecar)
|
||||
/* driver a modulo 12 counter, with div6, 4 & 3 */
|
||||
/* summed as the output of the circuit. */
|
||||
/************************************************/
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_20, 1,
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_20,
|
||||
RES_K(260), // R87 + R89 @ max
|
||||
RES_K(10), // R87 + R89 @ min
|
||||
DISC_LOGADJ, "R89")
|
||||
@ -631,7 +631,7 @@ DISCRETE_SOUND_START(montecar)
|
||||
/************************************************/
|
||||
DISCRETE_COMP_ADDER(NODE_30, 1, MONTECAR_DRONE_LOUD_DATA, &montecar_drone_vol_res) // make sure to change the node value in the mixer table if you change this node number
|
||||
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_40, 1,
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_40,
|
||||
RES_K(260), // R85 + R88 @ max
|
||||
RES_K(10), // R85 + R88 @ min
|
||||
DISC_LOGADJ, "R88")
|
||||
|
@ -42,7 +42,7 @@ DISCRETE_SOUND_START(hitme)
|
||||
DISCRETE_INPUT_PULSE(HITME_OUT1, 0)
|
||||
|
||||
/* This represents the resistor at R3, which controls the speed of the sound effects */
|
||||
DISCRETE_ADJUSTMENT_TAG(HITME_GAME_SPEED,1,0.0,25000.0,DISC_LINADJ,"R3")
|
||||
DISCRETE_ADJUSTMENT_TAG(HITME_GAME_SPEED,0.0,25000.0,DISC_LINADJ,"R3")
|
||||
|
||||
/* The clock for the main downcounter is a "404", or LS123 retriggerable multivibrator.
|
||||
* It is clocked by IPH2 (8.945MHz/16 = 559kHz), then triggers a pulse which is adjustable
|
||||
|
@ -749,7 +749,7 @@ static DISCRETE_SOUND_START(boothill)
|
||||
/* The low value of the pot is set to 75000. A real 1M pot will never go to 0 anyways.
|
||||
This will give the control more apparent volume range.
|
||||
The music way overpowers the rest of the sounds anyways. */
|
||||
DISCRETE_ADJUSTMENT_TAG(BOOTHILL_MUSIC_ADJ, 1, RES_M(1), 75000, DISC_LOGADJ, "MUSIC_ADJ")
|
||||
DISCRETE_ADJUSTMENT_TAG(BOOTHILL_MUSIC_ADJ, RES_M(1), 75000, DISC_LOGADJ, "MUSIC_ADJ")
|
||||
|
||||
/************************************************
|
||||
* Tone generator
|
||||
@ -942,8 +942,8 @@ static DISCRETE_SOUND_START(checkmat)
|
||||
/* This is needed because the original controls are infinite, but the UI only gives 100 steps. */
|
||||
/* Also real variable resistors never hit 0 ohms. There is always some resistance. */
|
||||
/* R309 mostly just increases the Boom clipping, making it sound bassier. */
|
||||
DISCRETE_ADJUSTMENT_TAG(CHECKMAT_R309, 1, RES_K(100), 1000, DISC_LOGADJ, "R309")
|
||||
DISCRETE_ADJUSTMENT_TAG(CHECKMAT_R411, 1, RES_M(1), 1000, DISC_LOGADJ, "R411")
|
||||
DISCRETE_ADJUSTMENT_TAG(CHECKMAT_R309, RES_K(100), 1000, DISC_LOGADJ, "R309")
|
||||
DISCRETE_ADJUSTMENT_TAG(CHECKMAT_R411, RES_M(1), 1000, DISC_LOGADJ, "R411")
|
||||
|
||||
/************************************************
|
||||
* Boom Sound
|
||||
@ -1218,7 +1218,7 @@ static DISCRETE_SOUND_START(desertgu)
|
||||
/* The low value of the pot is set to 75000. A real 1M pot will never go to 0 anyways. */
|
||||
/* This will give the control more apparent volume range. */
|
||||
/* The music way overpowers the rest of the sounds anyways. */
|
||||
DISCRETE_ADJUSTMENT_TAG(DESERTGU_MUSIC_ADJ, 1, RES_M(1), 75000, DISC_LOGADJ, "MUSIC_ADJ")
|
||||
DISCRETE_ADJUSTMENT_TAG(DESERTGU_MUSIC_ADJ, RES_M(1), 75000, DISC_LOGADJ, "MUSIC_ADJ")
|
||||
|
||||
/************************************************
|
||||
* Tone generator
|
||||
@ -1513,7 +1513,7 @@ static DISCRETE_SOUND_START(dplay)
|
||||
/* The low value of the pot is set to 1000. A real 1M pot will never go to 0 anyways. */
|
||||
/* This will give the control more apparent volume range. */
|
||||
/* The music way overpowers the rest of the sounds anyways. */
|
||||
DISCRETE_ADJUSTMENT_TAG(DPLAY_MUSIC_ADJ, 1, RES_M(1), 1000, DISC_LOGADJ, "MUSIC_ADJ")
|
||||
DISCRETE_ADJUSTMENT_TAG(DPLAY_MUSIC_ADJ, RES_M(1), 1000, DISC_LOGADJ, "MUSIC_ADJ")
|
||||
|
||||
/************************************************
|
||||
* Music and Tone Generator
|
||||
@ -1942,7 +1942,7 @@ static DISCRETE_SOUND_START(clowns)
|
||||
/* The low value of the pot is set to 7000. A real 1M pot will never go to 0 anyways. */
|
||||
/* This will give the control more apparent volume range. */
|
||||
/* The music way overpowers the rest of the sounds anyways. */
|
||||
DISCRETE_ADJUSTMENT_TAG(CLOWNS_MUSIC_ADJ, 1, RES_M(1), 7000, DISC_LOGADJ, "MUSIC_ADJ")
|
||||
DISCRETE_ADJUSTMENT_TAG(CLOWNS_MUSIC_ADJ, RES_M(1), 7000, DISC_LOGADJ, "MUSIC_ADJ")
|
||||
|
||||
/************************************************
|
||||
* Tone generator
|
||||
|
@ -80,7 +80,7 @@ DISCRETE_SOUND_START(nitedrvr)
|
||||
/* 0k = 214Hz. 250k = 4416Hz */
|
||||
/************************************************/
|
||||
DISCRETE_RCFILTER(NODE_20, 1, NITEDRVR_MOTOR_DATA, 123037, 2.2e-6)
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_21, 1, (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, 1, NODE_20, NODE_21)
|
||||
|
||||
DISCRETE_MULTADD(NODE_23, 1, NODE_22, 2, 27.0/6) /* F1 = /12*2 = /6 */
|
||||
|
@ -123,14 +123,14 @@ DISCRETE_SOUND_START(skydiver)
|
||||
/* frequency, then decays at the rate set by */
|
||||
/* a 68k resistor and 22uf capacitor. */
|
||||
/************************************************/
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_30, 1, 250000, 50000, DISC_LINADJ, "WHISTLE1") /* R66 */
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_30, 250000, 50000, DISC_LINADJ, "WHISTLE1") /* R66 */
|
||||
DISCRETE_MULTADD(NODE_31, 1, SKYDIVER_WHISTLE1_EN, 3.05-0.33, 0.33)
|
||||
DISCRETE_RCDISC2(NODE_32, SKYDIVER_WHISTLE1_EN, NODE_31, 1.0, NODE_31, 68000.0, 2.2e-5) /* CV */
|
||||
DISCRETE_SWITCH(NODE_33, 1, SKYDIVER_OCT1_EN, 1e-8, 1e-8 + 3.3e-9) /* Cap C73 & C58 */
|
||||
DISCRETE_555_ASTABLE_CV(NODE_34, SKYDIVER_WHISTLE1_EN, 100000, NODE_30, NODE_33, NODE_32, &skydiverWhistl555)
|
||||
DISCRETE_MULTIPLY(SKYDIVER_WHISTLE1_SND, SKYDIVER_WHISTLE1_EN, NODE_34, 228.5/3.3)
|
||||
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_35, 1, 250000, 50000, DISC_LINADJ, "WHISTLE2") /* R65 */
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_35, 250000, 50000, DISC_LINADJ, "WHISTLE2") /* R65 */
|
||||
DISCRETE_MULTADD(NODE_36, 1, SKYDIVER_WHISTLE2_EN, 3.05-0.33, 0.33)
|
||||
DISCRETE_RCDISC2(NODE_37, SKYDIVER_WHISTLE2_EN, NODE_36, 1.0, NODE_36, 68000.0, 2.2e-5) /* CV */
|
||||
DISCRETE_SWITCH(NODE_38, 1, SKYDIVER_OCT2_EN, 1e-8, 1e-8 + 3.3e-9) /* Cap C72 & C59 */
|
||||
|
@ -122,7 +122,7 @@ DISCRETE_SOUND_START(sprint2)
|
||||
/* and are output thru a DAC */
|
||||
/************************************************/
|
||||
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_20, 1,
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_20,
|
||||
RES_K(260), // R21 + R23 @ max
|
||||
RES_K(10), // R21 + R23 @ min
|
||||
DISC_LOGADJ, "MOTOR1")
|
||||
@ -160,7 +160,7 @@ DISCRETE_SOUND_START(sprint2)
|
||||
/************************************************/
|
||||
/* Car2 motor sound */
|
||||
/************************************************/
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_40, 1,
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_40,
|
||||
RES_K(260), // R21 + R23 @ max
|
||||
RES_K(10), // R21 + R23 @ min
|
||||
DISC_LOGADJ, "MOTOR2")
|
||||
@ -245,7 +245,7 @@ DISCRETE_SOUND_START(sprint1)
|
||||
/* and are output thru a DAC */
|
||||
/************************************************/
|
||||
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_20, 1,
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_20,
|
||||
RES_K(260), // R21 + R23 @ max
|
||||
RES_K(10), // R21 + R23 @ min
|
||||
DISC_LOGADJ, "MOTOR")
|
||||
@ -370,7 +370,7 @@ DISCRETE_SOUND_START(dominos)
|
||||
DISCRETE_INPUT_DATA (DOMINOS_AMP_DATA) // IC C4
|
||||
DISCRETE_INPUT_LOGIC(DOMINOS_ATTRACT_EN)
|
||||
|
||||
DISCRETE_ADJUSTMENT_TAG(DOMINOS_R23, 1,
|
||||
DISCRETE_ADJUSTMENT_TAG(DOMINOS_R23,
|
||||
RES_K(60), // R21 + R23 @ max
|
||||
RES_K(10), // R21 + R23 @ min
|
||||
DISC_LINADJ, "R23")
|
||||
|
@ -175,7 +175,6 @@ static const discrete_mixer_desc sprint4_mixer =
|
||||
DEFAULT_TTL_V_LOGIC_1, /* VDATA */ \
|
||||
&sprint4_motor_freq_DAC) /* LADDER */ \
|
||||
DISCRETE_ADJUSTMENT_TAG(SPRINT4_PLAYER_MOTOR_NODE(2, _plr), \
|
||||
1, /* ENAB */ \
|
||||
RES_K(10) + RES_K(250), /* MIN */ \
|
||||
RES_K(10), /* MAX */ \
|
||||
DISC_LOGADJ, /* LOGLIN */ \
|
||||
|
@ -247,7 +247,7 @@ DISCRETE_SOUND_START(tank8)
|
||||
DISCRETE_ADDER2(NODE_125, 1 , NODE_122, NODE_124 )
|
||||
DISCRETE_MULTIPLY(NODE_126, 1, NODE_120, NODE_125 )
|
||||
DISCRETE_RCFILTER(NODE_127, 1, NODE_126, RES_K(47), CAP_U(0.1))
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_128, 1,
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_128,
|
||||
1.0, // min gain of E5
|
||||
1.0 + 100.0/22, // max gain of E5 = 1 + r132/r101
|
||||
DISC_LINADJ, "CRASH")
|
||||
|
@ -131,7 +131,7 @@ DISCRETE_SOUND_START(triplhnt)
|
||||
/************************************************/
|
||||
/* Bear Roar is a VCO with noise mixed in. */
|
||||
/************************************************/
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_20, 1,
|
||||
DISCRETE_ADJUSTMENT_TAG(NODE_20,
|
||||
10000, // R86 + R88 @ 0
|
||||
260000, // R86 + R88 @ max
|
||||
DISC_LOGADJ, "BEAR")
|
||||
|
@ -74,7 +74,7 @@ static DISCRETE_SOUND_START(frogs)
|
||||
DISCRETE_INPUT_NOT(FROGS_CAPTURE_EN)
|
||||
DISCRETE_INPUT_NOT(FROGS_SPLASH_EN)
|
||||
|
||||
DISCRETE_ADJUSTMENT_TAG(FROGS_R93, 1, RES_M(1), RES_K(10), DISC_LOGADJ, "R93")
|
||||
DISCRETE_ADJUSTMENT_TAG(FROGS_R93, RES_M(1), RES_K(10), DISC_LOGADJ, "R93")
|
||||
|
||||
DISCRETE_555_MSTABLE(NODE_30, 1, FROGS_TONGUE_EN, RES_K(100), CAP_U(1), &frogsZip555m)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user