diff options
Diffstat (limited to 'src/mame/audio/sprint4.c')
-rw-r--r-- | src/mame/audio/sprint4.c | 287 |
1 files changed, 143 insertions, 144 deletions
diff --git a/src/mame/audio/sprint4.c b/src/mame/audio/sprint4.c index 4c2797bab62..756c752f3c2 100644 --- a/src/mame/audio/sprint4.c +++ b/src/mame/audio/sprint4.c @@ -16,7 +16,7 @@ * Mar 2007, D.R. ************************************************************************/ -#define SPRINT4_2V (15750.0/4) +#define SPRINT4_2V (15750.0/4) static const discrete_lfsr_desc sprint4_lfsr = { @@ -36,65 +36,65 @@ static const discrete_lfsr_desc sprint4_lfsr = static const discrete_dac_r1_ladder sprint4_motor_freq_DAC = { - 4, /* size */ - { RES_M(2.2), /* R20 */ - RES_M(1), /* R23 */ - RES_K(470), /* R22 */ - RES_K(220) }, /* R21 */ - 5.0 - 0.6, /* 5V - CR1 junction voltage */ - RES_K(68), /* R24 */ - 0, /* no rGnd */ - CAP_U(2.2) /* C28 */ + 4, /* size */ + { RES_M(2.2), /* R20 */ + RES_M(1), /* R23 */ + RES_K(470), /* R22 */ + RES_K(220) }, /* R21 */ + 5.0 - 0.6, /* 5V - CR1 junction voltage */ + RES_K(68), /* R24 */ + 0, /* no rGnd */ + CAP_U(2.2) /* C28 */ }; -#define SPRINT4_MOTOR_OUT_RES (1.0 / (1.0 / RES_K(10) + 1.0 / RES_K(10) + 1.0 / RES_K(10))) +#define SPRINT4_MOTOR_OUT_RES (1.0 / (1.0 / RES_K(10) + 1.0 / RES_K(10) + 1.0 / RES_K(10))) static const discrete_dac_r1_ladder sprint4_motor_out_DAC = { - 4, /* size */ - { RES_K(10), /* R76 */ - 0, /* not connected */ - RES_K(10), /* R77 */ - RES_K(10) }, /* R75 */ - 0, /* no vBias */ - 0, /* no rBias */ - 0, /* no rGnd */ - CAP_U(0.1) /* C47 */ + 4, /* size */ + { RES_K(10), /* R76 */ + 0, /* not connected */ + RES_K(10), /* R77 */ + RES_K(10) }, /* R75 */ + 0, /* no vBias */ + 0, /* no rBias */ + 0, /* no rGnd */ + CAP_U(0.1) /* C47 */ }; -#define SPRINT4_BANG_RES (1.0 / (1.0 / RES_K(8.2) + 1.0 / RES_K(3.9) + 1.0 / RES_K(2.2) + 1.0 / RES_K(1))) +#define SPRINT4_BANG_RES (1.0 / (1.0 / RES_K(8.2) + 1.0 / RES_K(3.9) + 1.0 / RES_K(2.2) + 1.0 / RES_K(1))) static const discrete_dac_r1_ladder sprint4_bang_DAC = { - 4, /* size */ - { RES_K(8.2), /* R19 */ - RES_K(3.9), /* R18 */ - RES_K(2.2), /* R17 */ - RES_K(1) }, /* R16 */ - 0, /* no vBias */ - 0, /* no rBias */ - 0, /* no rGnd */ - CAP_U(0.1) /* C32 */ + 4, /* size */ + { RES_K(8.2), /* R19 */ + RES_K(3.9), /* R18 */ + RES_K(2.2), /* R17 */ + RES_K(1) }, /* R16 */ + 0, /* no vBias */ + 0, /* no rBias */ + 0, /* no rGnd */ + CAP_U(0.1) /* C32 */ }; static const discrete_555_cc_desc sprint4_motor_vco = { DISC_555_OUT_DC | DISC_555_OUT_SQW, - 5, // B+ voltage of 555 + 5, // B+ voltage of 555 DEFAULT_555_VALUES, - 0.7 // Q1 junction voltage + 0.7 // Q1 junction voltage }; /* this will make 4 slightly different screech circuits due to part tolerance */ /* otherwise they would all sound identical */ -#define SPRINT4_SCREECH_CIRCUIT(_plr) \ +#define SPRINT4_SCREECH_CIRCUIT(_plr) \ static const discrete_schmitt_osc_desc sprint4_screech_osc_##_plr = \ { \ - RES_K(1), /* R65 */ \ - 100, /* R64 */ \ - CAP_U(10) + CAP_U((_plr-2) * .2), /* C44 */ \ + RES_K(1), /* R65 */ \ + 100, /* R64 */ \ + CAP_U(10) + CAP_U((_plr-2) * .2), /* C44 */ \ DEFAULT_7414_VALUES, \ DISC_SCHMITT_OSC_IN_IS_LOGIC | DISC_SCHMITT_OSC_ENAB_IS_AND \ }; @@ -107,37 +107,37 @@ SPRINT4_SCREECH_CIRCUIT(4) static const discrete_mixer_desc sprint4_mixer = { DISC_MIXER_IS_RESISTOR, - { RES_K(10) + SPRINT4_MOTOR_OUT_RES, /* R105 */ - RES_K(10) + SPRINT4_MOTOR_OUT_RES, /* R106 */ - RES_K(10) + SPRINT4_BANG_RES, /* R104 */ - RES_K(47), /* R102 */ - RES_K(47) }, /* R103 */ - { 0 }, /* no rNode{} */ - { 0 }, /* no c{} */ - 0, /* no rI */ - RES_K(5), /* R109 */ - 0, /* no cF */ - CAP_U(0.1), /* C51 */ - 0, /* vRef = Gnd */ - 1 /* gain */ + { RES_K(10) + SPRINT4_MOTOR_OUT_RES, /* R105 */ + RES_K(10) + SPRINT4_MOTOR_OUT_RES, /* R106 */ + RES_K(10) + SPRINT4_BANG_RES, /* R104 */ + RES_K(47), /* R102 */ + RES_K(47) }, /* R103 */ + { 0 }, /* no rNode{} */ + { 0 }, /* no c{} */ + 0, /* no rI */ + RES_K(5), /* R109 */ + 0, /* no cF */ + CAP_U(0.1), /* C51 */ + 0, /* vRef = Gnd */ + 1 /* gain */ }; /* discrete sound output nodes */ -#define SPRINT4_MOTOR_SND_1 NODE_11 -#define SPRINT4_MOTOR_SND_2 NODE_12 -#define SPRINT4_MOTOR_SND_3 NODE_13 -#define SPRINT4_MOTOR_SND_4 NODE_14 -#define SPRINT4_SCREECH_SND_1 NODE_15 -#define SPRINT4_SCREECH_SND_2 NODE_16 -#define SPRINT4_SCREECH_SND_3 NODE_17 -#define SPRINT4_SCREECH_SND_4 NODE_18 -#define SPRINT4_BANG_SND NODE_19 -#define SPRINT4_NOISE NODE_20 -#define SPRINT4_FINAL_MIX_1_2 NODE_21 -#define SPRINT4_FINAL_MIX_3_4 NODE_22 - -#define SPRINT4_ATTRACT_INV NODE_23 +#define SPRINT4_MOTOR_SND_1 NODE_11 +#define SPRINT4_MOTOR_SND_2 NODE_12 +#define SPRINT4_MOTOR_SND_3 NODE_13 +#define SPRINT4_MOTOR_SND_4 NODE_14 +#define SPRINT4_SCREECH_SND_1 NODE_15 +#define SPRINT4_SCREECH_SND_2 NODE_16 +#define SPRINT4_SCREECH_SND_3 NODE_17 +#define SPRINT4_SCREECH_SND_4 NODE_18 +#define SPRINT4_BANG_SND NODE_19 +#define SPRINT4_NOISE NODE_20 +#define SPRINT4_FINAL_MIX_1_2 NODE_21 +#define SPRINT4_FINAL_MIX_3_4 NODE_22 + +#define SPRINT4_ATTRACT_INV NODE_23 /* setup the attract input and it's inverse */ @@ -147,16 +147,16 @@ static const discrete_mixer_desc sprint4_mixer = /* port tags used for the discrete adjusters */ -#define SPRINT4_MOTOR_TAG_1 "MOTOR1" -#define SPRINT4_MOTOR_TAG_2 "MOTOR2" -#define SPRINT4_MOTOR_TAG_3 "MOTOR3" -#define SPRINT4_MOTOR_TAG_4 "MOTOR4" +#define SPRINT4_MOTOR_TAG_1 "MOTOR1" +#define SPRINT4_MOTOR_TAG_2 "MOTOR2" +#define SPRINT4_MOTOR_TAG_3 "MOTOR3" +#define SPRINT4_MOTOR_TAG_4 "MOTOR4" /* used to offset the motor nodes based on the player so the nodes do not overlap */ /* _plr must be 1, 2, 3, or 4 */ /* so it uses NODES_30 to NODE_69 */ -#define SPRINT4_PLAYER_MOTOR_NODE(_node, _plr) NODE(20 + 10 * _plr + _node) +#define SPRINT4_PLAYER_MOTOR_NODE(_node, _plr) NODE(20 + 10 * _plr + _node) /************************************************ @@ -165,76 +165,76 @@ static const discrete_mixer_desc sprint4_mixer = * complete motor effects for each player * _plr must be 1, 2, 3, or 4 ************************************************/ -#define SPRINT4_PLAYER_MOTOR(_plr) \ +#define SPRINT4_PLAYER_MOTOR(_plr) \ DISCRETE_INPUTX_DATA(SPRINT4_MOTOR_DATA_##_plr, \ - -1, 0x0f, 0) /* latch IC D8 inverts the data */ \ + -1, 0x0f, 0) /* latch IC D8 inverts the data */ \ DISCRETE_DAC_R1(SPRINT4_PLAYER_MOTOR_NODE(1, _plr), \ - SPRINT4_MOTOR_DATA_##_plr, /* DATA */ \ - DEFAULT_TTL_V_LOGIC_1, /* VDATA */ \ - &sprint4_motor_freq_DAC) /* LADDER */ \ + SPRINT4_MOTOR_DATA_##_plr, /* DATA */ \ + DEFAULT_TTL_V_LOGIC_1, /* VDATA */ \ + &sprint4_motor_freq_DAC) /* LADDER */ \ DISCRETE_ADJUSTMENT(SPRINT4_PLAYER_MOTOR_NODE(2, _plr), \ - RES_K(10) + RES_K(250), /* MIN */ \ - RES_K(10), /* MAX */ \ - DISC_LOGADJ, /* LOGLIN */ \ - SPRINT4_MOTOR_TAG_##_plr) /* PORT TAG */ \ - DISCRETE_555_CC(SPRINT4_PLAYER_MOTOR_NODE(3, _plr), /* IC D8, pin 3 */ \ - 1, /* RESET */ \ - SPRINT4_PLAYER_MOTOR_NODE(1, _plr), /* VIN */ \ - SPRINT4_PLAYER_MOTOR_NODE(2, _plr), /* R */ \ - CAP_U(0.01), /* C34 */ \ - RES_M(3.3), /* R42 */ \ - 0, /* no RGND */ \ - 0, /* no RDIS */ \ - &sprint4_motor_vco) /* OPTIONS */ \ - DISCRETE_COUNTER_7492(SPRINT4_PLAYER_MOTOR_NODE(4, _plr), /* IC D9, pins 11,9,8 */ \ - 1, /* ENAB */ \ - SPRINT4_ATTRACT_EN, /* RESET */ \ - SPRINT4_PLAYER_MOTOR_NODE(3, _plr), /* CLK */ \ - DISC_CLK_ON_F_EDGE) \ - DISCRETE_TRANSFORM3(SPRINT4_PLAYER_MOTOR_NODE(5, _plr), /* IC B10, pin 3 */ \ - SPRINT4_PLAYER_MOTOR_NODE(4, _plr), /* INP0 */ \ - 0x01, /* INP1 */ \ - 0x04, /* INP2 */ \ - "01&02&2/^") /* XOR QA and QC */ \ - DISCRETE_COUNTER(SPRINT4_PLAYER_MOTOR_NODE(6, _plr), /* IC D9, pin 12 */ \ - 1, /* ENAB */ \ - SPRINT4_ATTRACT_EN, /* RESET */ \ - SPRINT4_PLAYER_MOTOR_NODE(5, _plr), /* CLK */ \ - 0, 1, /* MIN, MAX */ \ - DISC_COUNT_UP, /* DIR */ \ - 0, /* INIT0 */ \ - DISC_CLK_ON_F_EDGE) /* CLKTYPE */ \ - DISCRETE_TRANSFORM3(SPRINT4_PLAYER_MOTOR_NODE(7, _plr), /* */ \ - SPRINT4_PLAYER_MOTOR_NODE(4, _plr), /* INP0 */ \ - SPRINT4_PLAYER_MOTOR_NODE(6, _plr), /* INP1 */ \ - 0x08, /* INP2 */ \ - "012*+") /* join 7492 bits together */ \ - DISCRETE_DAC_R1(SPRINT4_MOTOR_SND_##_plr, \ - SPRINT4_PLAYER_MOTOR_NODE(7, _plr), /* DATA */ \ - DEFAULT_TTL_V_LOGIC_1, /* VDATA */ \ - &sprint4_motor_out_DAC) /* LADDER */ + RES_K(10) + RES_K(250), /* MIN */ \ + RES_K(10), /* MAX */ \ + DISC_LOGADJ, /* LOGLIN */ \ + SPRINT4_MOTOR_TAG_##_plr) /* PORT TAG */ \ + DISCRETE_555_CC(SPRINT4_PLAYER_MOTOR_NODE(3, _plr), /* IC D8, pin 3 */ \ + 1, /* RESET */ \ + SPRINT4_PLAYER_MOTOR_NODE(1, _plr), /* VIN */ \ + SPRINT4_PLAYER_MOTOR_NODE(2, _plr), /* R */ \ + CAP_U(0.01), /* C34 */ \ + RES_M(3.3), /* R42 */ \ + 0, /* no RGND */ \ + 0, /* no RDIS */ \ + &sprint4_motor_vco) /* OPTIONS */ \ + DISCRETE_COUNTER_7492(SPRINT4_PLAYER_MOTOR_NODE(4, _plr), /* IC D9, pins 11,9,8 */ \ + 1, /* ENAB */ \ + SPRINT4_ATTRACT_EN, /* RESET */ \ + SPRINT4_PLAYER_MOTOR_NODE(3, _plr), /* CLK */ \ + DISC_CLK_ON_F_EDGE) \ + DISCRETE_TRANSFORM3(SPRINT4_PLAYER_MOTOR_NODE(5, _plr), /* IC B10, pin 3 */ \ + SPRINT4_PLAYER_MOTOR_NODE(4, _plr), /* INP0 */ \ + 0x01, /* INP1 */ \ + 0x04, /* INP2 */ \ + "01&02&2/^") /* XOR QA and QC */ \ + DISCRETE_COUNTER(SPRINT4_PLAYER_MOTOR_NODE(6, _plr), /* IC D9, pin 12 */ \ + 1, /* ENAB */ \ + SPRINT4_ATTRACT_EN, /* RESET */ \ + SPRINT4_PLAYER_MOTOR_NODE(5, _plr), /* CLK */ \ + 0, 1, /* MIN, MAX */ \ + DISC_COUNT_UP, /* DIR */ \ + 0, /* INIT0 */ \ + DISC_CLK_ON_F_EDGE) /* CLKTYPE */ \ + DISCRETE_TRANSFORM3(SPRINT4_PLAYER_MOTOR_NODE(7, _plr), /* */ \ + SPRINT4_PLAYER_MOTOR_NODE(4, _plr), /* INP0 */ \ + SPRINT4_PLAYER_MOTOR_NODE(6, _plr), /* INP1 */ \ + 0x08, /* INP2 */ \ + "012*+") /* join 7492 bits together */ \ + DISCRETE_DAC_R1(SPRINT4_MOTOR_SND_##_plr, \ + SPRINT4_PLAYER_MOTOR_NODE(7, _plr), /* DATA */ \ + DEFAULT_TTL_V_LOGIC_1, /* VDATA */ \ + &sprint4_motor_out_DAC) /* LADDER */ /************************************************ * Bang sound ************************************************/ -#define SPRINT4_BANG \ +#define SPRINT4_BANG \ DISCRETE_LFSR_NOISE(SPRINT4_NOISE, \ - 1, /* ENAB */ \ - SPRINT4_ATTRACT_INV, /* RESET */ \ - SPRINT4_2V, /* CLK */ \ - 1, /* AMPL */ \ - 0, /* FEED */ \ - 1.0/2, /* BIAS */ \ - &sprint4_lfsr) /* LFSRTB */ \ - DISCRETE_INPUT_DATA(SPRINT4_BANG_DATA) \ - DISCRETE_ONOFF(NODE_70, /* IC F7 */ \ - SPRINT4_NOISE, /* ENAB */ \ - SPRINT4_BANG_DATA) /* INP0 */ \ + 1, /* ENAB */ \ + SPRINT4_ATTRACT_INV, /* RESET */ \ + SPRINT4_2V, /* CLK */ \ + 1, /* AMPL */ \ + 0, /* FEED */ \ + 1.0/2, /* BIAS */ \ + &sprint4_lfsr) /* LFSRTB */ \ + DISCRETE_INPUT_DATA(SPRINT4_BANG_DATA) \ + DISCRETE_ONOFF(NODE_70, /* IC F7 */ \ + SPRINT4_NOISE, /* ENAB */ \ + SPRINT4_BANG_DATA) /* INP0 */ \ DISCRETE_DAC_R1(SPRINT4_BANG_SND, \ - NODE_70, /* DATA */ \ - DEFAULT_TTL_V_LOGIC_1, /* VDATA */ \ - &sprint4_bang_DAC) /* LADDER */ + NODE_70, /* DATA */ \ + DEFAULT_TTL_V_LOGIC_1, /* VDATA */ \ + &sprint4_bang_DAC) /* LADDER */ /************************************************ @@ -245,13 +245,13 @@ static const discrete_mixer_desc sprint4_mixer = * it uses the bang noise source. * _plr must be 1, 2, 3, or 4 ************************************************/ -#define SPRINT4_PLAYER_SCREECH(_plr) \ - DISCRETE_INPUT_LOGIC(SPRINT4_SCREECH_EN_##_plr) \ - DISCRETE_SCHMITT_OSCILLATOR(SPRINT4_SCREECH_SND_##_plr, \ - SPRINT4_SCREECH_EN_##_plr, /* ENAB */ \ - SPRINT4_NOISE, /* INP0 */ \ - DEFAULT_TTL_V_LOGIC_1, /* AMPL */ \ - &sprint4_screech_osc_##_plr) /* TABLE */ +#define SPRINT4_PLAYER_SCREECH(_plr) \ + DISCRETE_INPUT_LOGIC(SPRINT4_SCREECH_EN_##_plr) \ + DISCRETE_SCHMITT_OSCILLATOR(SPRINT4_SCREECH_SND_##_plr, \ + SPRINT4_SCREECH_EN_##_plr, /* ENAB */ \ + SPRINT4_NOISE, /* INP0 */ \ + DEFAULT_TTL_V_LOGIC_1, /* AMPL */ \ + &sprint4_screech_osc_##_plr) /* TABLE */ /************************************************ @@ -260,15 +260,15 @@ static const discrete_mixer_desc sprint4_mixer = * or * _plr_a must be 3 and _plr_b must be 4 ************************************************/ -#define SPRINT4_MIXER(_plr_a, _plr_b, _gain) \ +#define SPRINT4_MIXER(_plr_a, _plr_b, _gain) \ DISCRETE_MIXER5(SPRINT4_FINAL_MIX_##_plr_a##_##_plr_b, \ - 1, /* ENAB */ \ - SPRINT4_MOTOR_SND_##_plr_a, /* IN0 */ \ - SPRINT4_MOTOR_SND_##_plr_b, /* IN1 */ \ - SPRINT4_BANG_SND, /* IN2 */ \ - SPRINT4_SCREECH_SND_##_plr_a, /* IN3 */ \ - SPRINT4_SCREECH_SND_##_plr_b, /* IN4 */ \ - &sprint4_mixer) /* INFO */ \ + 1, /* ENAB */ \ + SPRINT4_MOTOR_SND_##_plr_a, /* IN0 */ \ + SPRINT4_MOTOR_SND_##_plr_b, /* IN1 */ \ + SPRINT4_BANG_SND, /* IN2 */ \ + SPRINT4_SCREECH_SND_##_plr_a, /* IN3 */ \ + SPRINT4_SCREECH_SND_##_plr_b, /* IN4 */ \ + &sprint4_mixer) /* INFO */ \ DISCRETE_OUTPUT(SPRINT4_FINAL_MIX_##_plr_a##_##_plr_b, _gain) @@ -299,4 +299,3 @@ DISCRETE_SOUND_START(ultratnk) SPRINT4_PLAYER_SCREECH(2) SPRINT4_MIXER(1, 2, 30000) DISCRETE_SOUND_END - |