diff options
Diffstat (limited to 'src/mame/audio/sprint8.c')
-rw-r--r-- | src/mame/audio/sprint8.c | 242 |
1 files changed, 121 insertions, 121 deletions
diff --git a/src/mame/audio/sprint8.c b/src/mame/audio/sprint8.c index 06900a09800..37ade932db0 100644 --- a/src/mame/audio/sprint8.c +++ b/src/mame/audio/sprint8.c @@ -8,97 +8,97 @@ /* Discrete Sound Input Nodes */ -#define SPRINT8_CRASH_EN NODE_01 -#define SPRINT8_SCREECH_EN NODE_02 -#define SPRINT8_ATTRACT_EN NODE_03 -#define SPRINT8_MOTOR1_EN NODE_04 -#define SPRINT8_MOTOR2_EN NODE_05 -#define SPRINT8_MOTOR3_EN NODE_06 -#define SPRINT8_MOTOR4_EN NODE_07 -#define SPRINT8_MOTOR5_EN NODE_08 -#define SPRINT8_MOTOR6_EN NODE_09 -#define SPRINT8_MOTOR7_EN NODE_10 -#define SPRINT8_MOTOR8_EN NODE_11 +#define SPRINT8_CRASH_EN NODE_01 +#define SPRINT8_SCREECH_EN NODE_02 +#define SPRINT8_ATTRACT_EN NODE_03 +#define SPRINT8_MOTOR1_EN NODE_04 +#define SPRINT8_MOTOR2_EN NODE_05 +#define SPRINT8_MOTOR3_EN NODE_06 +#define SPRINT8_MOTOR4_EN NODE_07 +#define SPRINT8_MOTOR5_EN NODE_08 +#define SPRINT8_MOTOR6_EN NODE_09 +#define SPRINT8_MOTOR7_EN NODE_10 +#define SPRINT8_MOTOR8_EN NODE_11 /* Discrete Sound Output Nodes */ -#define SPRINT8_NOISE NODE_12 -#define SPRINT8_MOTOR1_SND NODE_13 -#define SPRINT8_MOTOR2_SND NODE_14 -#define SPRINT8_MOTOR3_SND NODE_15 -#define SPRINT8_MOTOR4_SND NODE_16 -#define SPRINT8_MOTOR5_SND NODE_17 -#define SPRINT8_MOTOR6_SND NODE_18 -#define SPRINT8_MOTOR7_SND NODE_19 -#define SPRINT8_MOTOR8_SND NODE_20 -#define SPRINT8_CRASH_SCREECH_SND NODE_21 -#define SPRINT8_AUDIO_1_2 NODE_22 -#define SPRINT8_AUDIO_3_7 NODE_23 -#define SPRINT8_AUDIO_5_6 NODE_24 -#define SPRINT8_AUDIO_4_8 NODE_25 +#define SPRINT8_NOISE NODE_12 +#define SPRINT8_MOTOR1_SND NODE_13 +#define SPRINT8_MOTOR2_SND NODE_14 +#define SPRINT8_MOTOR3_SND NODE_15 +#define SPRINT8_MOTOR4_SND NODE_16 +#define SPRINT8_MOTOR5_SND NODE_17 +#define SPRINT8_MOTOR6_SND NODE_18 +#define SPRINT8_MOTOR7_SND NODE_19 +#define SPRINT8_MOTOR8_SND NODE_20 +#define SPRINT8_CRASH_SCREECH_SND NODE_21 +#define SPRINT8_AUDIO_1_2 NODE_22 +#define SPRINT8_AUDIO_3_7 NODE_23 +#define SPRINT8_AUDIO_5_6 NODE_24 +#define SPRINT8_AUDIO_4_8 NODE_25 /* Adjusters */ -#define SPRINT8_R132_POT NODE_29 +#define SPRINT8_R132_POT NODE_29 /* Parts List - Resistors */ -#define SPRINT8_R1 RES_K(47) -#define SPRINT8_R3 RES_K(47) -#define SPRINT8_R4 RES_K(47) -#define SPRINT8_R19 RES_K(1) -#define SPRINT8_R20 RES_K(1) -#define SPRINT8_R27 RES_K(18) -#define SPRINT8_R28 820 -#define SPRINT8_R29 RES_K(330) -#define SPRINT8_R39 RES_K(120) -#define SPRINT8_R40 RES_K(22) -#define SPRINT8_R41 RES_K(150) -#define SPRINT8_R89 RES_K(22) -#define SPRINT8_R91 RES_K(47) -#define SPRINT8_R93 RES_K(2.2) -#define SPRINT8_R96 RES_K(47) -#define SPRINT8_R97 RES_K(2.2) -#define SPRINT8_R99 RES_K(27) -#define SPRINT8_R100 RES_K(1) -#define SPRINT8_R101 RES_K(2.2) -#define SPRINT8_R132 RES_K(100) -#define SPRINT8_R145 RES_K(3.3) -#define SPRINT8_R146 RES_K(7.5) -#define SPRINT8_R147 100 -#define SPRINT8_R148 RES_K(1) -#define SPRINT8_R149 RES_K(22) +#define SPRINT8_R1 RES_K(47) +#define SPRINT8_R3 RES_K(47) +#define SPRINT8_R4 RES_K(47) +#define SPRINT8_R19 RES_K(1) +#define SPRINT8_R20 RES_K(1) +#define SPRINT8_R27 RES_K(18) +#define SPRINT8_R28 820 +#define SPRINT8_R29 RES_K(330) +#define SPRINT8_R39 RES_K(120) +#define SPRINT8_R40 RES_K(22) +#define SPRINT8_R41 RES_K(150) +#define SPRINT8_R89 RES_K(22) +#define SPRINT8_R91 RES_K(47) +#define SPRINT8_R93 RES_K(2.2) +#define SPRINT8_R96 RES_K(47) +#define SPRINT8_R97 RES_K(2.2) +#define SPRINT8_R99 RES_K(27) +#define SPRINT8_R100 RES_K(1) +#define SPRINT8_R101 RES_K(2.2) +#define SPRINT8_R132 RES_K(100) +#define SPRINT8_R145 RES_K(3.3) +#define SPRINT8_R146 RES_K(7.5) +#define SPRINT8_R147 100 +#define SPRINT8_R148 RES_K(1) +#define SPRINT8_R149 RES_K(22) /* Parts List - Capacitors */ -#define SPRINT8_C8 CAP_U(.01) -#define SPRINT8_C17 CAP_U(.001) -#define SPRINT8_C18 CAP_U(.047) -#define SPRINT8_C19 CAP_U(.047) -#define SPRINT8_C26 CAP_U(100) -#define SPRINT8_C27 CAP_U(.22) -#define SPRINT8_C28 CAP_U(.1) -#define SPRINT8_C59 CAP_U(.1) -#define SPRINT8_C63 CAP_U(.1) -#define SPRINT8_C64 CAP_U(.1) -#define SPRINT8_C89 CAP_U(.1) -#define SPRINT8_C90 CAP_U(.1) - -#define SPRINT8_HSYNC 15750.0 /* not checked */ -#define SPRINT8_1V SPRINT8_HSYNC/2 -#define SPRINT8_2V SPRINT8_1V/2 +#define SPRINT8_C8 CAP_U(.01) +#define SPRINT8_C17 CAP_U(.001) +#define SPRINT8_C18 CAP_U(.047) +#define SPRINT8_C19 CAP_U(.047) +#define SPRINT8_C26 CAP_U(100) +#define SPRINT8_C27 CAP_U(.22) +#define SPRINT8_C28 CAP_U(.1) +#define SPRINT8_C59 CAP_U(.1) +#define SPRINT8_C63 CAP_U(.1) +#define SPRINT8_C64 CAP_U(.1) +#define SPRINT8_C89 CAP_U(.1) +#define SPRINT8_C90 CAP_U(.1) + +#define SPRINT8_HSYNC 15750.0 /* not checked */ +#define SPRINT8_1V SPRINT8_HSYNC/2 +#define SPRINT8_2V SPRINT8_1V/2 static const discrete_lfsr_desc sprint8_lfsr = { DISC_CLK_IS_FREQ, - 16, /* Bit Length */ - 0, /* Reset Value */ - 10, /* Use Bit 10 as XOR input 0 */ - 15, /* Use Bit 15 as XOR input 1 */ - DISC_LFSR_XNOR, /* Feedback stage1 is XNOR */ - DISC_LFSR_OR, /* Feedback stage2 is just stage 1 output OR with external feed */ - DISC_LFSR_REPLACE, /* Feedback stage3 replaces the shifted register contents */ - 0x000001, /* Everything is shifted into the first bit only */ - DISC_LFSR_FLAG_RESET_TYPE_L, /* Output is not inverted */ - 12 /* Output bit */ + 16, /* Bit Length */ + 0, /* Reset Value */ + 10, /* Use Bit 10 as XOR input 0 */ + 15, /* Use Bit 15 as XOR input 1 */ + DISC_LFSR_XNOR, /* Feedback stage1 is XNOR */ + DISC_LFSR_OR, /* Feedback stage2 is just stage 1 output OR with external feed */ + DISC_LFSR_REPLACE, /* Feedback stage3 replaces the shifted register contents */ + 0x000001, /* Everything is shifted into the first bit only */ + DISC_LFSR_FLAG_RESET_TYPE_L, /* Output is not inverted */ + 12 /* Output bit */ }; static const discrete_555_desc sprint8_crash_555a_desc = @@ -110,9 +110,9 @@ static const discrete_555_desc sprint8_crash_555a_desc = static const discrete_integrate_info sprint8_crash_integrate = { DISC_INTEGRATE_OP_AMP_1, - SPRINT8_R99, SPRINT8_R97, SPRINT8_R96, SPRINT8_C59, /*r1, r2, r3, c, */ - 5, 5, /* v1, vP*/ - 0, 0, 0 /* no functions */ + SPRINT8_R99, SPRINT8_R97, SPRINT8_R96, SPRINT8_C59, /*r1, r2, r3, c, */ + 5, 5, /* v1, vP*/ + 0, 0, 0 /* no functions */ }; static const discrete_555_desc sprint8_motor_555a_desc = @@ -129,24 +129,24 @@ static const discrete_555_desc sprint8_motor_555m_desc = static const discrete_op_amp_filt_info sprint8_motor_filter = { - SPRINT8_R27, 0, SPRINT8_R28 + RES_2_PARALLEL(SPRINT8_R19, SPRINT8_R20), 0, SPRINT8_R29, /* r1, r2, r3, r4, rF, */ - SPRINT8_C18, SPRINT8_C19, 0, /* c1, c2, c3, */ - 5.0 * RES_VOLTAGE_DIVIDER(SPRINT8_R19, SPRINT8_R20), 5, 0 /* vRef, vP, vN */ + SPRINT8_R27, 0, SPRINT8_R28 + RES_2_PARALLEL(SPRINT8_R19, SPRINT8_R20), 0, SPRINT8_R29, /* r1, r2, r3, r4, rF, */ + SPRINT8_C18, SPRINT8_C19, 0, /* c1, c2, c3, */ + 5.0 * RES_VOLTAGE_DIVIDER(SPRINT8_R19, SPRINT8_R20), 5, 0 /* vRef, vP, vN */ }; static const discrete_mixer_desc sprint8_crash_screech_mixer = { DISC_MIXER_IS_RESISTOR, {SPRINT8_R149, SPRINT8_R91}, - {0, NODE_80}, /* R93 switched in/out of circuit */ - {0}, 0, 0, SPRINT8_C64, 0, 0, 1 /* c, rI, rF, cF, cAmp, vRef, gain */ + {0, NODE_80}, /* R93 switched in/out of circuit */ + {0}, 0, 0, SPRINT8_C64, 0, 0, 1 /* c, rI, rF, cF, cAmp, vRef, gain */ }; static const discrete_mixer_desc sprint8_mixer = { DISC_MIXER_IS_RESISTOR, {SPRINT8_R1 + SPRINT8_R100, SPRINT8_R3, SPRINT8_R4}, - {0}, {0}, 0, 0, 0, SPRINT8_C8, 0, 1 /* r_nodes, c, rI, rF, cF, cAmp, vRef, gain */ + {0}, {0}, 0, 0, 0, SPRINT8_C8, 0, 1 /* r_nodes, c, rI, rF, cF, cAmp, vRef, gain */ }; @@ -157,9 +157,9 @@ static const discrete_mixer_desc sprint8_mixer = * This pulse is passed through C17 and pulled up with R40. This pulse is too fast to emulate so * 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), 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 */ \ +#define SPRINT8_MOTOR_CIRCUIT(_car) \ +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) \ DISCRETE_OP_AMP_FILTER(NODE_RELATIVE(SPRINT8_MOTOR1_SND, _car - 1), 1, NODE_RELATIVE(NODE_60, _car - 1), 0, DISC_OP_AMP_FILTER_IS_BAND_PASS_1M, &sprint8_motor_filter) @@ -167,8 +167,8 @@ DISCRETE_OP_AMP_FILTER(NODE_RELATIVE(SPRINT8_MOTOR1_SND, _car - 1), 1, NODE_RELA DISCRETE_SOUND_START( sprint8 ) /************************************************ - * Input register mapping - ************************************************/ + * Input register mapping + ************************************************/ DISCRETE_INPUT_LOGIC(SPRINT8_CRASH_EN) DISCRETE_INPUT_NOT (SPRINT8_SCREECH_EN) DISCRETE_INPUT_NOT (SPRINT8_ATTRACT_EN) @@ -185,58 +185,58 @@ DISCRETE_SOUND_START( sprint8 ) DISCRETE_ADJUSTMENT(SPRINT8_R132_POT, 0, SPRINT8_R132, DISC_LINADJ, "R132") /************************************************ - * Noise Generator, Crash, Screech - ************************************************/ + * Noise Generator, Crash, Screech + ************************************************/ /* Address line A2 is used to XOR the feedback bits. - * This can not easily be implemented, so I just set the - * feedback as XNOR. */ - DISCRETE_LFSR_NOISE(SPRINT8_NOISE, /* IC F7, pin 13 */ - 1, /* ENAB */ - SPRINT8_ATTRACT_EN, /* RESET */ - SPRINT8_2V, 1, 0, 0.5, &sprint8_lfsr) /* CLK,AMPL,FEED,BIAS,LFSRTB */ + * This can not easily be implemented, so I just set the + * feedback as XNOR. */ + DISCRETE_LFSR_NOISE(SPRINT8_NOISE, /* IC F7, pin 13 */ + 1, /* ENAB */ + SPRINT8_ATTRACT_EN, /* RESET */ + SPRINT8_2V, 1, 0, 0.5, &sprint8_lfsr) /* CLK,AMPL,FEED,BIAS,LFSRTB */ DISCRETE_TASK_END() 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, - NODE_70, /* IN0 */ + NODE_70, /* IN0 */ RES_2_PARALLEL(SPRINT8_R148, SPRINT8_R147) + RES_2_PARALLEL(RES_K(5), RES_K(10)), SPRINT8_C90, - 5.0 * RES_VOLTAGE_DIVIDER(RES_K(5), RES_K(10))) /* ref to 555 CV pin */ + 5.0 * RES_VOLTAGE_DIVIDER(RES_K(5), RES_K(10))) /* ref to 555 CV pin */ DISCRETE_555_ASTABLE_CV(NODE_72, - SPRINT8_SCREECH_EN, /* RESET */ + SPRINT8_SCREECH_EN, /* RESET */ SPRINT8_R145, SPRINT8_R146, SPRINT8_C89, - NODE_71, /* CTRLV */ + NODE_71, /* CTRLV */ &sprint8_crash_555a_desc) DISCRETE_INTEGRATE(NODE_73, SPRINT8_CRASH_EN, 0, &sprint8_crash_integrate) DISCRETE_SWITCH(NODE_80, - 1, /* ENAB */ - SPRINT8_NOISE, /* SWITCH */ - SPRINT8_R93, 1) /* INP0,INP1*/ - DISCRETE_SWITCH(NODE_74, /* effect of Q20 */ - 1, /* ENAB */ - SPRINT8_NOISE, /* SWITCH */ - NODE_73, 0) /* INP0,INP1*/ + 1, /* ENAB */ + SPRINT8_NOISE, /* SWITCH */ + SPRINT8_R93, 1) /* INP0,INP1*/ + DISCRETE_SWITCH(NODE_74, /* effect of Q20 */ + 1, /* ENAB */ + SPRINT8_NOISE, /* SWITCH */ + NODE_73, 0) /* INP0,INP1*/ DISCRETE_MIXER2(NODE_75, - 1, /* ENAB */ + 1, /* ENAB */ NODE_72, NODE_74, &sprint8_crash_screech_mixer) DISCRETE_CRFILTER_VREF(NODE_76, - NODE_75, /* IN0 */ + NODE_75, /* IN0 */ SPRINT8_R93 + SPRINT8_R91, SPRINT8_C63, - 5) /* VREF */ + 5) /* VREF */ /* IC E5, pin 14 gain. Does not simulate minor DC offset caused by R93. */ DISCRETE_TRANSFORM5(NODE_77, NODE_76, 5, SPRINT8_R132_POT, SPRINT8_R101, 1, "01-23/4+*1+") DISCRETE_CLAMP(SPRINT8_CRASH_SCREECH_SND, NODE_77, 0, 15.0 - 1.5) DISCRETE_TASK_END() /************************************************ - * Car Motor - ************************************************/ + * Car Motor + ************************************************/ DISCRETE_TASK_START(1) SPRINT8_MOTOR_CIRCUIT(1) SPRINT8_MOTOR_CIRCUIT(2) @@ -258,29 +258,29 @@ DISCRETE_SOUND_START( sprint8 ) DISCRETE_TASK_END() /************************************************ - * Final Mix - ************************************************/ + * Final Mix + ************************************************/ DISCRETE_TASK_START(2) DISCRETE_MIXER3(SPRINT8_AUDIO_1_2, - SPRINT8_ATTRACT_EN, /* ENAB */ + SPRINT8_ATTRACT_EN, /* ENAB */ SPRINT8_CRASH_SCREECH_SND, SPRINT8_MOTOR1_SND, SPRINT8_MOTOR2_SND, &sprint8_mixer) DISCRETE_MIXER3(SPRINT8_AUDIO_3_7, - SPRINT8_ATTRACT_EN, /* ENAB */ + SPRINT8_ATTRACT_EN, /* ENAB */ SPRINT8_CRASH_SCREECH_SND, SPRINT8_MOTOR3_SND, SPRINT8_MOTOR7_SND, &sprint8_mixer) DISCRETE_MIXER3(SPRINT8_AUDIO_5_6, - SPRINT8_ATTRACT_EN, /* ENAB */ + SPRINT8_ATTRACT_EN, /* ENAB */ SPRINT8_CRASH_SCREECH_SND, SPRINT8_MOTOR5_SND, SPRINT8_MOTOR6_SND, &sprint8_mixer) DISCRETE_MIXER3(SPRINT8_AUDIO_4_8, - SPRINT8_ATTRACT_EN, /* ENAB */ + SPRINT8_ATTRACT_EN, /* ENAB */ SPRINT8_CRASH_SCREECH_SND, SPRINT8_MOTOR4_SND, SPRINT8_MOTOR8_SND, |