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:
Derrick Renaud 2008-08-01 00:08:42 +00:00
parent bab5dcbbbb
commit c43a103858
19 changed files with 73 additions and 88 deletions

View File

@ -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)

View File

@ -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},

View File

@ -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" },

View File

@ -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 */

View File

@ -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)

View File

@ -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 */

View File

@ -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

View File

@ -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 */

View File

@ -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 */

View File

@ -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")

View File

@ -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

View File

@ -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

View File

@ -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 */

View File

@ -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 */

View File

@ -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")

View File

@ -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 */ \

View File

@ -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")

View File

@ -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")

View File

@ -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)